TCP/IP学习一 (IP首部和TCP首部的定义)
2005-01-28 21:06
357 查看
IP首部 = 4位版本+4位首部长度+8位服务类型(TOS)+16位总长度+16位标识+3位标志+13位片偏移+8位生存空间(TTL)+8位协议+16位首部检验和+32位源IP地址+32位目的IP地址。
可如下结构定义:
typedef struct
{
BYTE HLen : 4; //4位长度
BYTE Vers : 4; //4位版本
//TOS 服务类型 Begin *****************************
//**************无 最小费用(该变量只在NNTP中有效)***
BYTE ST_NoUse : 2; //未用位
BYTE ST_Reliability : 1; //最高可靠性
BYTE ST_Throughput : 1; //最大吞吐量
BYTE ST_Delay : 1; //最小时延
BYTE ST_Precendence : 3; //优先权子字段(据说现在已经被忽略)
//TOS 服务类型 End *****************************
WORD TotalLen; //16位总长度(字节数)
WORD ID; //16位标识
// 13位片位移和3位标志在IP分片中才用到
BYTE OffHigh : 5; //13位片偏移 高5位
//3位标志 Begin *********************
BYTE Flag_MoreFrag : 1; //更多分片位
BYTE Flag_DoNotFrag : 1; //不可分片位
BYTE Flag_NoUse : 1;
//3位标志 End *********************
BYTE OffLow : 8; //13位片偏移 低8位
BYTE TimeToLive : 8; //TTL 8位生存时间
BYTE Protocol : 8; //8位协议
WORD HChecksum; //16位首部检验和
BYTE SIP[4]; //32位源IP地址
BYTE DIP[4]; //32位目的IP地址
} IPHEADER;
TCP首部 = 16位源端口号+16位目的端口号+32位序号+32位确认序号+4位首部长度+保留位(6位)+URG+ACK+PSH+RST+SYN+FIN+16位窗口大小+16位检验和+16位紧急指针
可如下结构定义:
typedef struct
{
WORD SPort; //16位源端口号
WORD DPort; //16位目的端口号
DWORD SeqNum; //32位序号
DWORD AckNum; //32位确认序号
BYTE Reserved1 : 4; //保留4位
BYTE HLen : 4; //4位首部长度
BYTE CB_FIN : 1; //发端完成发送任务
BYTE CB_SYN : 1; //同步序号用来发起一个连接
BYTE CB_RST : 1; //重建连接
BYTE CB_PSH : 1; //接收方应该尽快将这个报文段交给应用层
BYTE CB_ACK : 1; //确认序号有效
BYTE CB_URG : 1; //紧急指针有效
BYTE Reserved2 : 2; //保留2位
WORD Window; //16位窗口大小
WORD Checksum; //16位检验和
WORD UrgPtr; //16位紧急指针
} TCPHEADER;
可如下结构定义:
typedef struct
{
BYTE HLen : 4; //4位长度
BYTE Vers : 4; //4位版本
//TOS 服务类型 Begin *****************************
//**************无 最小费用(该变量只在NNTP中有效)***
BYTE ST_NoUse : 2; //未用位
BYTE ST_Reliability : 1; //最高可靠性
BYTE ST_Throughput : 1; //最大吞吐量
BYTE ST_Delay : 1; //最小时延
BYTE ST_Precendence : 3; //优先权子字段(据说现在已经被忽略)
//TOS 服务类型 End *****************************
WORD TotalLen; //16位总长度(字节数)
WORD ID; //16位标识
// 13位片位移和3位标志在IP分片中才用到
BYTE OffHigh : 5; //13位片偏移 高5位
//3位标志 Begin *********************
BYTE Flag_MoreFrag : 1; //更多分片位
BYTE Flag_DoNotFrag : 1; //不可分片位
BYTE Flag_NoUse : 1;
//3位标志 End *********************
BYTE OffLow : 8; //13位片偏移 低8位
BYTE TimeToLive : 8; //TTL 8位生存时间
BYTE Protocol : 8; //8位协议
WORD HChecksum; //16位首部检验和
BYTE SIP[4]; //32位源IP地址
BYTE DIP[4]; //32位目的IP地址
} IPHEADER;
TCP首部 = 16位源端口号+16位目的端口号+32位序号+32位确认序号+4位首部长度+保留位(6位)+URG+ACK+PSH+RST+SYN+FIN+16位窗口大小+16位检验和+16位紧急指针
可如下结构定义:
typedef struct
{
WORD SPort; //16位源端口号
WORD DPort; //16位目的端口号
DWORD SeqNum; //32位序号
DWORD AckNum; //32位确认序号
BYTE Reserved1 : 4; //保留4位
BYTE HLen : 4; //4位首部长度
BYTE CB_FIN : 1; //发端完成发送任务
BYTE CB_SYN : 1; //同步序号用来发起一个连接
BYTE CB_RST : 1; //重建连接
BYTE CB_PSH : 1; //接收方应该尽快将这个报文段交给应用层
BYTE CB_ACK : 1; //确认序号有效
BYTE CB_URG : 1; //紧急指针有效
BYTE Reserved2 : 2; //保留2位
WORD Window; //16位窗口大小
WORD Checksum; //16位检验和
WORD UrgPtr; //16位紧急指针
} TCPHEADER;
相关文章推荐
- 网络学习笔记-Ip首部
- TCP/IP学习(2)
- TCP-IP详解学习(一)
- UNIX网络编程0 IP头,TCP头,UDP头,MAC帧头定义
- TCP/IP体系结构之网络层(IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP))
- 【学习笔记】TCP/IP基础(1)
- IP头、TCP头、UDP头详解以及定义
- TCP/IP详解--学习笔记(9)-TCP协议概述
- UNIX环境学习笔记------原始套接字-----IP头部定义
- TCP-IP学习笔记六:Netty使用--简单通信编程2
- TCP/IP网络编程 学习笔记_8 --优雅地断开套接字连接
- IP头、TCP头、UDP头详解以及定义(全)
- 孙鑫VC学习(第14课网络编程,TCP/IP,UDP)
- TCP/IP详细学习
- socket通讯原理以及tcp、ip三次握手机制学习
- IP,TCP,UDP头及定义
- 网络协议结构体定义(eth,ip,tcp,udp,icmp...)
- 用协议分析工具学习TCP/IP
- Linux 网卡驱动学习(六)(应用层、tcp 层、ip 层、设备层和驱动层作用解析)