TCP、UDP、IP头部结构
数据传输在TCP/IP网络模型中,经过一层便会添加一层头部,其中TCP(网络传输协议),UDP处于传输层,IP(网间协议)处于网络层。
TCP/IP协议族
- TCP 传输控制协议 应用程序之间通信 建立的全双工通信
- UDP 用户数据包协议 应用程序间简单通信
- IP 网际协议 计算机之间的协议,寻址 无连接的,不占用通信线路
- ICMP 因特网消息控制协议 针对错误和状态,处于IP层协议
- DHCP 动态主机配置协议 针对动态寻址
TCP/IP网络模型
- 应用层(ISO中的应用层,表示层,会话层)
SMTP(电子邮件)、TELNET(远程终端接入)、HTTP(万维网)、FTP(文件传输)——————TCP
DNS(域名转换)、TFTP(文件传输)、SNMP(网络管理)、NFS(远程文件服务器)——————UDP - 传输层
为数据加TCP,UDP头部 - 网络层
为数据加IP头部,TCP/IP协议的核心,所有的TCP、UDP、IGMP、IMCP数据都以IP数据格式传递 - 网络接入层(称呼很多,ISO中数据链入层,物理层)
这层负责将比特流封装成帧,把网络层数据报加上帧头帧尾,帧头包括源mac地址和目的mac地址,有差错检测
IP数据包头部
IP数据包头部
//IP数据包前20个字节固定,一般是20到60个字节
TIPHeader = packed record
iph_verlen: byte; // 版本和长度
iph_tos: byte; // 服务类型
iph_length: word; // 总长度,2个无符号字节所以只能65535
iph_id: word; // 标识
iph_offset: word; // 标志和片偏移
iph_ttl: byte; // 生存时间
iph_protocol: byte; // 协议
iph_xsum: word; // 头校验和
iph_src: longword; // 源地址
iph_dest: longword; // 目的地址
end;
通常20个字节,最多不超过60个字节
TCP数据包的头
TCP数据包的头部
typedef struct _TCP_HEADER {
USHORT nSourPort ; // 源端口号16bit
USHORT nDestPort ; // 目的端口号16bit
UINT nSequNum ; // 序列号32bit
UINT nAcknowledgeNum ; // 确认号32bit
USHORT nHLenAndFlag ; // 前4位:TCP头长度;中6位:保留;后6位:标志位16bit
USHORT nWindowSize ; // 窗口大小16bit
USHORT nCheckSum ; // 检验和16bit
USHORT nrgentPointer ; // 紧急数据偏移量16bit
} TCP_HEADER, *PTCP_HEADER ;
一般是20个字节,加上option也不超过60个字节
UDP数据包的头部
UDP数据包的头部
typedef struct _UDP_HEADER {
USHORT nSourPort ; // 源端口号16bit
USHORT nDestPort ; // 目的端口号16bit
USHORT nLength ; // 数据包长度16bit
USHORT nCheckSum ; // 校验和16bit
} UDP_HEADER, *PUDP_HEADER ;
一般8个字节
DNS:DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。