运输层协议主要包括UDP 和 TCP, UDP相对来说比较简单,是无连接的不可靠的协议,TCP是可靠的有连接的协议,TCP是所有协议中最复杂的,实现代码量超过一万行。
UDP协议为不可靠协议,不负责对出错报文的重发和检测。
UDP协议格式:
Source port : (2 byte) Destination port (2 byte) Head Length (2 byte) CheckSum ( 2 byte)
TCP协议格式
Source port : (2 byte) Destination port: (2 byte)
Sequeues : (4 byte)
Acknowledgement : (4 byte)
HeadSize: (1 byte) Flag: (1 byte) Windows (2 byte)
CheckSum:( 2 byte) Urgent Pointer: (2 byte)
字段解释:
source port 源端口,destination port 目的端口,
sequeues:序列号,表示发送的数据的第一字节的编号。
Acknowledgement字段,确认号,表示确认对方发过来的数据大小的编号的下一次开始的序号,加入对方发送了1024个字节,并且全部接受,则下次发送给对方的确认号为1025,表示已收到1024个字节,请从1025开始发送。
HeadSize 字段这里为4位二进制位,每位表示4byte大小,四位二进制数最大为15,故首部最大为60byte大小。
Flag为标志字段,分别为 :
ACK确认字段:表示Acknowledgement字段有效,PSH位表示推送,作用为在缓存满了时,仍然发送该分组,用于初次请求建立连接。RST位表示复位,为1时直接断开连接。SYN位为同步位,在请求建立是为1。URG位为紧急指针位,为1时表示紧急指针字段有效。FIN位表示释放连接位,释放链接时置为1.