TCP包头、UDP包头、IP包头、和MAC帧包头详细字段和包头大小

1 TCP头

TCP是一种可靠的、面向连接的字节流服务,头部定义如下。

/*TCP头定义,共20个字节*/
typedef struct _TCP_HEADER 
{
  short m_sSourPort;              // 源端口号16bit
  short m_sDestPort;             // 目的端口号16bit
  unsigned int m_uiSequNum;         // 序列号32bit
  unsigned int m_uiAcknowledgeNum;    // 确认号32bit
  short m_sHeaderLenAndFlag;        // 前4位:TCP头长度;中6位:保留;后6位:标志位
  short m_sWindowSize;            // 窗口大小16bit
  short m_sCheckSum;              // 检验和16bit
  short m_surgentPointer;          // 紧急数据偏移量16bit
} __attribute__((packed))TCP_HEADER, *PTCP_HEADER;

TCP头部是20个字节,然后这里有窗口大小16位,指的就是 滑动窗口 的最大值是2的16次方减1,等于65535.

2 UDP头

UDP是一种不可靠的、无连接的数据报服务

/*UDP头定义,共8个字节*/
typedef struct _UDP_HEADER 
{
  unsigned short m_usSourPort;       // 源端口号16bit
  unsigned short m_usDestPort;       // 目的端口号16bit
  unsigned short m_usLength;        // 数据包长度16bit
  unsigned short m_usCheckSum;       // 校验和16bit
} __attribute__((packed))UDP_HEADER, *PUDP_HEADER;

UDP的头部是8个字节

3 IP头

IP协议不可靠、无连接的服务

/*IP头定义,共20个字节*/
typedef struct _IP_HEADER 
{
  char m_cVersionAndHeaderLen;     //版本信息(前4位),头长度(后4位)
  char m_cTypeOfService;          // 服务类型8位
  short m_sTotalLenOfPacket;       //数据包长度
  short m_sPacketID;            //数据包标识
  short m_sSliceinfo;           //分片使用
  char m_cTTL;                //存活时间
  char m_cTypeOfProtocol;         //协议类型
  short m_sCheckSum;            //校验和
  unsigned int m_uiSourIp;       //源ip
  unsigned int m_uiDestIp;       //目的ip
} __attribute__((packed))IP_HEADER, *PIP_HEADER ;

没有加可选选项的时候,IP包固定包头长度是20个字节。

所有的TCPUDPICMPIGMP数据都被封装在IP数据报中传送

4 MAC帧头

/*数据帧定义,头14个字节,尾4个字节*/
typedef struct _MAC_FRAME_HEADER
{
  char m_cDstMacAddress[6];    //目的mac地址
  char m_cSrcMacAddress[6];    //源mac地址
  short m_cType;    //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp
} __attribute__((packed))MAC_FRAME_HEADER,*PMAC_FRAME_HEADER;
 
typedef struct _MAC_FRAME_TAIL
{
  unsigned int m_sCheckSum;    //数据帧尾校验和
} __attribute__((packed))MAC_FRAME_TAIL, *PMAC_FRAME_TAIL;

帧定义,头14个字节,尾4个字节

IP协议往往被封装在以太网帧中传送

发布了1043 篇原创文章 · 获赞 630 · 访问量 286万+

猜你喜欢

转载自blog.csdn.net/u011068702/article/details/103941961