传输层为应用层提供会话和数据报通信服务。传输层最重要的两个协议是TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。TCP协议提供一对一的、面向连接的可靠通信服务,它能建立连接,对发送的数据报进行排序和确认,并恢复在传输过程中丢失的数据报。UDP协议提供一对一或一对多的、无连接的不可靠通信服务。
TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)的传输层协议。TCP协议会把应用层数据加上一个TCP头,组成TCP报文。TCP报文首部(TCP头)的格式如图1-6所示。
图1-6
如果用C语言来定义,代码如下:
typedef struct _TCP_HEADER //TCP头定义,共20个字节 { short sSourPort; //源端口号16bit short sDestPort; //目的端口号16bit unsigned int uiSequNum; //序列号32bit unsigned int uiAcknowledgeNum; //确认号32bit short sHeaderLenAndFlag; //前4位:TCP头长度;中6位:保留;后6位:标志位 short sWindowSize; //窗口大小16bit short sCheckSum; //检验和16bit short surgentPointer; //紧急数据偏移量16bit }TCP_HEADER, *PTCP_HEADER;
UDP协议是无连接、不保证可靠的传输层协议。UDP协议头相对比较简单,如图1-7所示。
图1-7
如果用C语言来定义,代码如下:
typedef struct _UDP_HEADER //UDP头定义,共8个字节 { unsigned short m_usSourPort; //源端口号16bit unsigned short m_usDestPort; //目的端口号16bit unsigned short m_usLength; //数据报长度16bit unsigned short m_usCheckSum; //校验和16bit }UDP_HEADER, *PUDP_HEADER;