Network

TCP、UDP、IP头部结构

2019-06-04  本文已影响0人  分流替躺欧阳克

数据传输在TCP/IP网络模型中,经过一层便会添加一层头部,其中TCP(网络传输协议),UDP处于传输层,IP(网间协议)处于网络层。

数据进入协议栈的封装过程

TCP/IP协议族

TCP/IP网络模型

  1. 应用层(ISO中的应用层,表示层,会话层)
    SMTP(电子邮件)、TELNET(远程终端接入)、HTTP(万维网)、FTP(文件传输)——————TCP
    DNS(域名转换)、TFTP(文件传输)、SNMP(网络管理)、NFS(远程文件服务器)——————UDP
  2. 传输层
    为数据加TCP,UDP头部
  3. 网络层
    为数据加IP头部,TCP/IP协议的核心,所有的TCP、UDP、IGMP、IMCP数据都以IP数据格式传递
  4. 网络接入层(称呼很多,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。

上一篇下一篇

猜你喜欢

热点阅读