传输层:

传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”的连接

传输层的PDU被称为Segment

TCP和UDP的报文格式

数通笔记_传输层

源端口号:未知端口号,大于1023的端口都被认为未知端口号,源端口的取值随机产生

目标端口号:已知端口号,1-1023之间,通常分配给应用层的各种协议



TCP:面向连接,通信过程中需要有回馈机制保证报文的可靠传输,流量控制机制,保证数据的发送效率

UDP:无连接无回馈,即使有回馈也是数据的回馈



TCP的建立-三次握手

任何基于TCP的应用,在发送数据之前,都需要TCP进行“三次握手”建立双向的可靠的连接

数通笔记_偏移量_02


在三次握手中,为了保证数据传输的可靠性,使用序列号=上一个报文的确认号,确认号=上一个报文的序列号+1

SYN:同步位,当同步位置位为1时,代表请求建立TCP连接

ACK:确认位,当确认位置位为1时,代表本报文有确认性质

ack:确认号,32bit,用于确认对方发来的最后一个TCP报文


在传输数据时,序列号=上一个报文的确认号,确认号=上一个报文的序列号+应用层字节数大小



TCP的关闭-四次挥手

但数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源




网络层:负责数据从一台主机到另外一台主机之间的传递


IPv4报文格式


数通笔记_传输层_03

标识符:用于区分不同数据包的分片

标志位: Rbit,保留

DFbit,当DF=1,代表不允许对该报文进行分片,当DF=9时代表允许分片

MFbit,当MF=1时,代表我是分片并且我不是最后一个。当MF=9时,代表我是最后一个分片

MF=1  偏移量=0  第一个分片

MF=1  偏移量≠0  分片报文,既不是第一个,也不是最后一个

MF=0  偏移量=0  非IP分片报文

MF=0  偏移量≠0  最后一个分片报文


只有一个分片才携带传输层字段,后续分片不携带传输层字段


偏移量:用于将分片报文重组


第一个分片的(传输层大小+PDU) /8=第二个分片的偏移量


(传输层大小+第一个分片的PDU+第二个分片的PDU) /8=第三个分片的偏移量



TTL值:生存时间,用于防止报文在网络中形成环路无限转发


Protocol: 8 bit,协议: 下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理

常见值:

· 1:ICMP,Internet Control Message;

· 2:IGMP,Internet Group Management;

· 6:TCP,Transmission Control Protocol;

· 17:UDP,User Datagram Protocol.