路由交换03-----传输层协议
传输层协议
传输层比较重要的两个协议是TCP
和UDP
协议。
1.TCP
TCP是一种可靠的、面向连接的全双工传输层协议。
TCP
的报文格式是这样的:
源端口(2字节):源主机应用程序使用的端口号。源端口和IP地址用作标识报文的返回地址。
目的端口(2字节):目的主机应用程序使用的端口号。
序号(4字节):seq
序号,标识发送方向接收方发送的数据段的序号。
确认序号(4字节):Ack
序号,接收方应答的序号,为接受到的序号+1。
头长度(4字节):表示i头部占4字节的数目。
URG:是否为紧急指针,0为不是,1为是。
ACK:请求或者应答连接,用于确认序号有效。
PSH:最快速度传输数据。
RST:重建会话。
SYN:同步连接序号,用于建立连接。
FIN:结束连接,为0是请求结束连接,为1是结束连接。
窗口大小(2字节):接收方告诉发送方想接收到的每个数据段的大小,可用于流量控制。
校验和(2字节):对头部和数据进行校验。
紧急指针:当URG为1时生效,表示这个数据是紧急数据,优先发送。
选项:用于记录路由或者时间戳之类的可选任务。
TCP传输数据分为三个过程:建立连接、传输数据、关闭连接。
建立连接的过程是一个三次握手的过程,首先,客户端发送一个标识为SYN
,序列为seq=a
的数据包,服务器端收到后,要对这个包进行确认,便回复一个SYN
,ACK
,Ack=a+1
,seq=b
的数据包,客户端收到这个包之后,进行确认,回复一个ACK
,seq=a+1
,Ack=b+1
的包,这样就建立连接了。
注意:ACK
是标志位的,用于确认序号有效。Ack
是确认序号,是seq+1
。
接着就开始传输数据。
数据传输结束后开始进行关闭连接,即TCP四次挥手。假设客户端想终止这个连接,于是发送一个数据包:FIN
,ACK
,seq=a
,服务器端收到之后,进行确认回复ACK
,seq=b
,Ack=a+1
,确认完客户端的终止连接之后,服务器端再进行终止连接,向客户端发送数据包为:FIN
、ACK
,seq=b
,Ack=a+1
,客户端收到之后,知道服务器端也终止连接然后进行确认回复:ACK
,seq=a+1
,Ack=b+1
,这样会话就关闭了。
2.UDP
UDP
是一种不可靠的、无连接的传输层协议,他不像TCP
一样需要三次握手四次挥手,UDP
不需要事先建立连接,因此也无法保证数据的可靠。
UDP
报文的头部是这样的:
源端口(2字节):初始化通信的端口号。
目的端口(2字节):接收方应用程序的地址接口。
UDP数据包长度(2字节):UDP头和数据的总长度。
校验和(2字节):数据包的头部和包内容的校验。
使用UDP
发送数据时,应用程序需要提供报文到达确认、排序、流量控制等功能,UDP
没有像TCP
一样的重传机制,占用资源小,处理效率高。一般用来传输语音、视频等。
对比