传输层为应用层提供会话和数据报通信服务。传输层的两个重要协议是TCP和UDP。
TCP提供一对一的、面向连接的高可靠(数据无丢失、数据无失序、数据无错误、数据无重复)通信服务,它能建立连接,对发送的数据报进行排序和确认,并恢复在传输过程中丢失的数据报。TCP会把应用层数据加上一个TCP报头,组成TCP报文段。TCP报文段的报头(或称为TCP头部)的格式如图1-6所示。
图1-6
如果用Java语言来定义,可以这样编写:
public class _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不同,UDP提供一对一或一对多的、无连接的不可靠通信服务。它的协议头相对比较简单,如图1-7所示。
图1-7
如果用Java语言来定义,可以这样编写:
public class _UDP_HEADER //UDP报头定义,共8字节 { unsigned short m_usSourPort; //源端口号16bit unsigned short m_usDestPort; //目的端口号16bit unsigned short m_usLength; //报文段长度16bit unsigned short m_usCheckSum; //校验和16bit }