IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络协议(OSI & TCP/IP)必面知识点 -> 正文阅读

[网络协议]网络协议(OSI & TCP/IP)必面知识点

网络协议

互联网的本质就是一系列网络协议,而互联网协议按照功能不同主要分为OSI七层协议TCP/IP 四层(也可以是5层)

OSI七层协议

在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型。一台计算机操作系统中的网络过程包括从应用请求(在协议栈的顶部)到网络介质(底部) ,OSI参考模型把功能分成七个分立的层次。

层级作用
应用层定义了针对每个应用的协议:电子邮件协议,远程登入协议,文件传输协议等
表示层定义固有的数据格式和网络标准数据格式的转换:列如定义了图像,文字流,声音,视频等格式转换
会话层对通信进行管理,管理传输层以下的分层:连接的建立,断开,持续时间的管理
传输层管理两个节点之间的数据传输:管理以及协调数据是否完整到达
网络层对地址进行管理以及路由选择:路由到目标地址
数据链路层两个互联设备之间传输和识别数据帧:数据帧与比特流之间的转换
物理层二进制层,以0,1来代表电压的高低,灯光的闪灭,界定连接器和网线的规格:管理了比特流与电子信号的切换

发送方由第七层到第一层 由上到下按照顺序传送数据,每个分层在处理上层传递的数据时,附上当前层协议所必须的 "首部"信息。接收方由第一层到第七层 由下到上按照顺序传递数据,每个分层对接收到的数据进行 "首部"与"内容"分离,在转发给上一层。最终将发送的数据恢复为原始数据

TCP/IP四层协议

TCP/IP (传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCPIP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

TCP/IP将网络分成四层

层级作用
应用层直接为应用提供协议,列如:SMTP,HTTP,TELNET等,除此之后,还提供加密,解密,格式化数据,以及建立或解除其他节点连接
传输层TCP/UDP,管理两个节点之间的数据传输
网络层进行网络连接的建立和终止以及IP地址的寻找等功能
网络接口层兼备了数据链路层物理层,既是传输数据的物理媒介,也是为网络层提供一条准确无误的线路

数据传输的完整路径

  • 应用层: 数据针对应用定义协议,组装数据(FTP,TELNET,HTTP),此时数据是报文的形式

  • 传输层:添加TCP/UDP报头,数据被拆分为

  • 网络层:添加IP报头,数据被拆分为

  • 数据链路层:添加帧头,数据被拆分为

  • 物理层:转换为比特流进行传输

TCP与UDP

TCP

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议

TCP 为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传

报文格式

7fb4b212a4a57f8fde5c8a48f8c80320.png

URG:紧急标志位,说明紧急指针有效;

ACK:确认标志位,多数情况下空,说明确认序号有效

PSH:推标志位,置位时表示接收方应立即请求将报文交给应用层

RST:复位标志,用于重建一个已经混乱的连接;

SYN:同步标志,该标志仅在三次握手建立TCP连接时有效

FIN:结束标志,带该标志位的数据包用于结束一个TCP会话

三次握手,四次挥手

img

1、客户端主动打开,发送连接请求报文段,将SYN标识位置为1,Sequence Number置为x(TCP规定SYN=1时不能携带数据,x为随机产生的一个值),然后进入SYN_SEND状态。

2、服务器收到SYN报文段进行确认,将SYN标识位置为1,ACK置为1,Sequence Number置为y,Acknowledgment Number置为x+1,然后进入SYN_RECV状态,这个状态被称为半连接状态。

3、客户端再进行一次确认,将ACK置为1(此时不用SYN),Sequence Number置为x+1,Acknowledgment Number置为y+1发向服务器,最后客户端与服务器都进入ESTABLISHED状态

img

1、客户端发送一个报文给服务端(没有数据),其中FIN设置为1,Sequence Number置为u,客户端进入FIN_WAIT_1状态。

2、服务端收到来自客户端的请求,发送一个ACK给客户端,Acknowledge置为u+1,同时发送Sequence Number为v,服务端年进入CLOSE_WAIT状态。

3、服务端发送一个FIN给客户端,ACK置为1,Sequence置为w,Acknowledge置为u+1,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态。

4、客户端收到FIN后,进入TIME_WAIT状态,接着发送一个ACK给服务端,Acknowledge置为w+1,Sequence Number置为u+1,最后客户端和服务端都进入CLOSED状态。

为什么三次握手和四次挥手

三次握手时,服务器同时把ACK和SYN放在一起发送到了客户端那里。

四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送

UDP

UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信

目前视频通话,电话,广播等都是通过UDP传播方式,不需要保证不丢帧,但是要保证实时性

IP

网络之间互连的协议(IP)是 Internet Protocol 的外语缩写,IP 是在 TCP/IP 协议中网络层的主要协议,任务是仅仅根据源主机和目的主机的地址传送数据。为此目的,IP 定义了寻址方法和数据报的封装结构。第一个架构的主要版本,现在称为 IPv4,仍然是最主要的互联网协议,尽管世界各地正在积极部署 IPv6

IP 协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是 IP 地址MAC地址(Media Access Control Address)

IP: 节点被分配到的地址,ip地址可以变动

MAC:网卡所属的固定地址,MAC地址基本上不会更改

SOCKET

Socket(套接字),原本是由 BSD UNIX 开发,后被移植到了 Windows 的 Winsock 以及嵌入式操作系统中,目前被广泛用于在应用在使用 TCP 或 UDP通信时调用的api

应用程序利用套接字,可以设置对端的 IP 地址,端口号,并实现数据的发送与接收,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个 Socket。

建立网络通信连接至少要一对端口号(Socket)。Socket 本质是编程接口(API),对 TCP/IP 的封装,TCP/IP 也要提供可供程序员做网络开发所用的接口,这就是 Socket 编程接口;HTTP 是轿车,提供了封装或者显示数据的具体形式;Socket 是发动机,提供了网络通信的能力

注:文章内容部分摘录于 https://blog.csdn.net/freekiteyu/article/details/72236734,文章内容按照作者本人理解排版记录,仅供学习与记录使用

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 12:17:20  更:2021-07-17 12:17:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 4:11:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码