传输层协议
1.TCP
2.UDP
TCP 协议
回顾内容
1.传输层功能:定义应用层协议数据报文的端口号,流量控制
2.对原始数据进行分段处理
传输层所提供服务
1.传输连接服务
2.数据传输服务:流量控制、差错控制、序列控制
一、传输层的 TCP 协议
1.面向连接的传输协议( TCP )
要求数据在传输以前必须建立连接,数据传输完成后,必须释放连接
仅支持单播传输:在两个终端之间建立的点对点连接
2.UDP(用户数据报协议)
二、报文字段
字段含义
· TCP 源端口( Source Port ):源计算机上的应用程序的端口号,占16位. TCP 目的端口( Destination Port ):目标计算机的应用程序端口号,占16位
·序号( Sequence Number ):占32位。它表示本报文段所发送数据的第一个字节的编号。在 TCP 连接中,所传送的字节流的每一个字节都会按顺序编号。当 SYN 标记不为1时,这是当前数据分段第一个字母的序列号;如果 SYN 的值是1时,这个字段的值就是初始序列值( ISN ),用于对序列号进行同步。这时,第一个字节的序列号比这个字段的值大1,也就是 ISN 加1
· TCP 确认号( Acknowledgment Number , ACK Number ):占32位。它表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。其值是接收计算机即将接收到的下一个序列号,也就是下一个接收到的字节的序列号加1
· TCP 首部长度( Header Length ):数据偏移是指数据段中的"数据"部分起始处距离 TCP 数据段起始处的字节偏移量,占4位。其实这里的"数据偏移"也是在确定 TCP 数据段头部分的长度,告诉接收端的应用程序,数据从何处开始
·保留( Reserved ):占4位。为 TCP 将来的发展预留空间,目前必须全部为0
· URG ( Urgent ):表示本报文段中发送的数据是否包含紧急数据。 URG =1时表示有紧急数据。当 URG =1时,后面的紧急指针字段才有效
· ACK :表示前面的确认号字段是否有效。 ACK =1时表示有效。只有当 ACK =1时,前面的确认号字段才有效。 TCP 规定,连接建立后, ACK 必须为1
· PSH ( Push ):告诉对方收到该报文段后是否立即把数据推送给上层。如果值为1,表示应当立即把数据提交给上层,而不是缓存起来
· RST :表示是否重置连接。如果 RST =1,说明 TCP 连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接· SYN :在建立连接时使用,用来同步序号。当 SYN =1, ACK =0时,表示这是一个请求建立连接的报文段;当 SYN =1, ACK =1时,表示对方同意建立连接。 SYN =1时,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中 SYN 才为1
· FIN :标记数据是否发送完毕,如果 FIN =1,表示数据已经发送完成,可以释放连接
·窗口大小( Window Size ):占16位。它表示从 Ack Number 开始还可以接收多少字节的数据量,也表示当前接收端的接收窗口还有多少剩余空间。该字段可以用于 TCP 的流量控制
.校验和( TCP Checksum ):占16位。它用于确认传输的数据是否有损坏。发送端基于数据内容校验生成一个数值,接收端根据接收的数据校验生成一个值。两个值必须相同,才能证明数据是有效的。如果两个值不同,则丢掉这个数据包。 Checksum 是根据伪头+ TCP 头+ TCP 数据三部分进行计算的
·紧急指针( Urgent Pointer ):仅当前面的 URG 控制位为1时才有意义。它指出本数据段中为紧急数据的字节数,占16位。当所有紧急数据处理完后, TCP 就会告诉应用程序恢复到正常操作。即使当前窗口大小为0,也是可以发送紧急数据的,因为紧急数据无须缓存
·选项( Option ):长度不定,但长度必须是32bits的整数倍
1、TCP连接的三次握手