数据通信02-各层常见协议
本文介绍了计算机网络中常见的分层协议及其功能,重点分析了TCP协议的核心机制。在协议分层方面,详细说明了应用层(HTTP、FTP等)、传输层(TCP/UDP)、网络层(IP/ICMP)和数据链路层(Ethernet/PPP)各层协议的作用。针对TCP协议,深入解析了其报文头部结构、三次握手建立连接的过程、确认重传机制保证可靠性、滑动窗口实现流量控制,以及四次挥手断开连接的完整流程。通过形象比喻和图
一 常见网络协议

应用层
- HTTP:超文本传输协议,提供浏览网页服务
- Telnet:远程登陆协议,提供远程管理服务
- FTP:文件传输协议,提供互联网文件资源共享服务
- SMTP:简单邮件传输协议,提供互联网电子邮件服务
- TFTP:简单文件传输协议,提供简单的文件传输服务
传输层
- TCP:为应用程序提供可靠的面向连接的通信服务。
- UDP:提供了无连接通信,且不对传送数据包进行可靠性的保证。
网络层
IP:将传输层的数据封装成数据包并完成源站点到目的站点负责转发,提供无连接、不可靠服务。
IGMP:负责IP组播成员管理,用于在IP主机和与其直接相邻的组播路由器间建立、维护组播组成员关系。
ICMP:基于IP协议在网络中发送控制消息,反馈通信环境中可能发生的各种问题,助力管理者诊断问题并采取适当措施解决。
数据链路层
Ethernet:一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网技术。
PPP:一种点对点模式的数据链路层协议,多用于广域网。
PPPoE(Point - to - Point Protocol over Ethernet,以太网承载 PPP 协议):常见的应用有家庭宽带拨号上网。
二 TCP与UDP的报头

TCP 报文头部:
Source Port:源端口,标识哪个应用程序发送。长度为 16 比特。
Destination Port:目的端口,标识哪个应用程序接收。长度为 16 比特。
以浏览网页的时候,客户端(网页浏览器)向服务器(网站)请求下载网页为例,
客户端向服务器发了一个请求报文,这个报文的源端口是客户端网页浏览器的端口,目标端口就是网站的web服务软件的端口。
Sequence Number:序号字段。TCP 链接中的每个报文都有序列号。长度为 32 比特。
Acknowledgment Number:确认号,用于对收到的报文的确认。
Header Length:头部长度,TCP 报文头部长度,默认情况下,TCP 头部为 20 字节。
Control bits:控制位,包含 FIN、ACK、SYN 等标志位,各个标志位的作用。
Window:窗口 TCP 的流量控制,这个值表明当前接收端可接收的最大的数据总数(以字节为单位)。窗口最大为 65535 字节。长度为 16 比特。
Checksum:校验字段,由发端计算和存储,并由收端进行验证,用于校验数据传输中是否有损坏。
UDP 报文头部:
Source Port:源端口,标识哪个应用程序发送。长度为 16 比特。
Destination Port:目的端口,标识哪个应用程序接收。长度为16比特。
Length:报文总长度。
三 TCP三次握手

TCP三次握手是两台计算机通过TCP协议建立可靠连接的过程,就像是两个人打电话前先确认对方是否能正常通话,以下用生活中打电话的例子来通俗解释:
第一次握手
PC1(1.1.1.1:1024)想要和PC2(2.2.2.2:23)建立连接,就好比你想给朋友打电话。PC1发送一个带有SYN标志位的数据包,就像你拿起电话拨出号码,并问:“是朋友你吗?能听到我说话不?” 这个数据包里有PC1自己选的一个初始序号Seq=a,同时Ack(确认号)为0,因为还没收到对方任何消息呢。这时候PC1进入了SYN - SENT(同步已发送)状态,等着朋友回应。
第二次握手
PC2收到了PC1的数据包,就好比你朋友接到了电话。PC2知道PC1想和它建立连接,于是它也回一个数据包。这个数据包里有SYN和ACK两个标志位都被置位了。SYN置位表示PC2也同意建立连接,就像朋友回答:“是我,我能听到你,我也想和你通话”;ACK置位是在确认PC1的请求,Ack=a + 1,意思是“我收到你序号为a的请求啦,下次你发数据从a + 1开始”。同时,PC2也有自己选的一个初始序号Seq=b。这时PC2进入SYN - RCVD(同步收到)状态,而这个数据包就发回给PC1。
第三次握手
PC1收到PC2的回复数据包后,再发送一个ACK包给PC2。这个包的Seq=a + 1(因为上次请求用了序号a,这次接着来),Ack=b + 1(确认收到PC2序号为b的数据包,让PC2下次从b + 1开始发),并且只有ACK标志位置位。这就像你跟朋友说:“好嘞,知道啦,那咱们开始聊吧”。PC1发送完这个包后就进入ESTABLISHED(已建立连接)状态,PC2收到这个包后也进入ESTABLISHED状态。至此,双方的TCP连接就成功建立起来了,就可以像你和朋友开始愉快聊天一样,两台计算机开始可靠地传输数据啦。
四 TCP确认机制

TCP确认机制就像是寄包裹时的回执确认,确保数据在两台电脑(如图中的PC1和PC2 )之间准确无误地传输,以下结合图片介绍:
建立连接
PC1(1.1.1.1:1024)和PC2(2.2.2.2:23)之间要传数据,得先建立TCP连接,就像打电话得先打通一样,连接建立好才能开始“说话”传数据。
数据发送与确认
- PC1要给PC2发数据,这些数据会被分成好多小部分。比如图里PC1先发了一段长度12Byte的数据。每个数据段都有TCP头部和IP头部,TCP头部里的Seq(序号)记录着这是从哪个序号开始的数据,Ack(确认号)则是期待收到对方下一个数据段的起始序号。这里PC1发的第一段数据Seq是a+1,意思是从序号a+1开始,它期待PC2回复的Ack是b+1。
- PC2收到数据后,会回复一个确认信息。它回复的Seq是b+1,Ack是a+1+12,告诉PC1“我收到从a+1开始的12Byte数据啦,期待你下次从a+1+12这个序号开始发”。而且这次回复PC2没有带实际数据,载荷长度是0Byte。
继续发送与确认
- PC1收到PC2的确认后,就知道数据发成功了,接着发下一段,比如图里又发了一段长度66Byte的数据,Seq变成a+13(因为前面发了12Byte,所以这里从a+13开始),Ack还是b+1(还是期待PC2从b+1开始回复确认)。
- PC2收到这66Byte数据后,再次回复确认,Seq还是b+1,Ack变成a+12+66,意思是“我收到前面12Byte和刚到的66Byte啦,你下次从a+12+66开始发” 。
通过这样不断发送数据和确认的过程,PC1和PC2能保证数据按顺序、完整地传输。如果PC1没收到PC2的确认,就会觉得数据可能没传过去,然后重新发送,就像寄包裹没收到回执会重新寄一样,以此保证数据可靠传输。
五 TCP滑动窗口

TCP滑动窗口是TCP协议中用于控制数据传输速率和流量控制的重要机制。以下结合图中示例,用通俗的语言来解释:
整体作用理解
想象你和朋友传纸条交流,你一次能处理的纸条数量有限。TCP滑动窗口就像你告诉朋友一次最多能接收多少张纸条(数据),朋友根据这个限制来决定发多少纸条,避免一下子给太多让你处理不过来,这就是流量控制。同时,它也能让数据传输更高效,就像合理安排传纸条速度,不浪费时间。
图中相关要素说明
在图中有两台电脑PC1和PC2通信。“win”代表窗口大小,它表示接收方当前还能接收多少数据。“seq”是序号,给每个数据段编号,方便确认和排序。“Ack”是确认号,告诉发送方哪些数据已经收到了。
过程解释
- 三次握手时:PC1发起连接,发送的数据包中
seq=100,win=3,表示初始序号是100,窗口大小为3(意味着一次最多接收3个数据段)。PC2回复seq=200,Ack=101(确认收到序号100的数据,期望下一个是101),win=3。然后PC1再确认,完成连接建立。 - 发送数据时:PC1开始发数据,发了三个数据段,
seq分别是101、102、103 ,win都还是3。这是因为一开始约定窗口大小是3,只要PC2没新指示,PC1就按这个发。 - 接收方处理:PC2收到数据后,处理了一部分,发现缓冲区空间变小了,就回复
Ack=104(表示101 - 103的数据都收到了,期望104),win=1(告诉PC1现在只能再接收1个数据段了) 。 - 后续发送:之后PC1再发数据时,如
seq=104,win还是3。这是因为虽然PC2回复窗口变小,但PC1已经按之前窗口大小准备好数据要发了,所以暂时还是按3来发。不过后续PC1会根据新的窗口指示调整发送数量。
总结
TCP滑动窗口通过动态调整发送方发送的数据量,适应接收方的处理能力,确保数据在网络中高效、可靠地传输,就像合理规划传纸条的过程,让交流顺畅进行。
六 TCP四次挥手

TCP 四次挥手是两台计算机在通过 TCP 协议通信结束后,断开连接的过程。以下结合图片以两台电脑(PC1 和 PC2 )为例,用通俗的语言解释:
第一次挥手
PC1 打算断开连接,就好比它跟 PC2 说:“我这边数据发完啦,准备断开连接咯。” 于是 PC1 发出一个带有 FIN(结束标志)的 TCP 报文,Seq(序号)是 101 ,Ack(确认号)是 301 ,这就像是给断开连接的请求做了个标记和确认。
第二次挥手
PC2 收到了 PC1 要断开连接的请求,它回复一个 ACK(确认标志)报文,就像在说:“我知道你想断开啦,我收到你的请求了。” 这个报文的 Seq 是 301 ,Ack 是 102 ,确认了 PC1 的请求。
第三次挥手
PC2 处理完自己手头的事情,也准备好断开连接了,它就给 PC1 发送一个带有 FIN 和 ACK 的 TCP 报文,意思是:“我这边也准备好断开啦。” 这里的 Seq 还是 301 ,Ack 是 102 。
第四次挥手
PC1 收到 PC2 也想断开的请求后,回复一个 ACK 报文,相当于说:“好的,我知道你也准备好断开了,那就断开吧。” 这个报文的 Seq 是 102 ,Ack 是 302 。 当 PC2 收到这个报文后,两台电脑之间的 TCP 连接就正式断开了。
通过这四次交互,两台电脑都确认双方都准备好断开连接,从而安全、有序地终止了 TCP 连接,就像是两个人在电话里说完再见后,都确认对方收到了再见的消息,然后挂掉电话。
七 网络层协议

当采用IP作为网络层协议时,通信的双方都会被分配到一个“独一无二”的IP地址来标识自己。IP地址可写成32位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如192.168.1.1。
IP数据包的封装与转发:网络层收到上层(如传输层)协议传来的数据时,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中。
中间经过的网络设备(如路由器),会维护一张指导IP报文转发的“地图”是路由表,它通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包。IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。除IP协议外,网络层中还有OSPF、IS - IS、BGP等各种路由协议帮助路由器建立路由表,ICMP用于进行网络的控制和状态诊断。
八 链路层协议-以太网

MAC(Media Access Control)地址在网络中唯一标识一 每个网卡,每个网卡都需要且会有唯一的一个MAC地址。

工作在数据链路层的设备。例如以太网交换机,会维护一张MAC地址表,用于指导数据帧转发。

ARP(Address Resolution Protocol)地址解析协议:根据已知的IP地址解析获得其对应的MAC地址。
九 常见物理层传输介质

双绞线、光纤、光纤、串口电缆、无线电磁波等
更多推荐
所有评论(0)