network protocol - decoqt/mywiki GitHub Wiki

#网络协议格式

###报文校验方式对比

协议名称 校验方式 校验部位
tcp 12B伪首部+tcp报文
udp 二进制反码求和运算 12B伪首部+UDP首部+UDP数据段
IP a IP首部
MAC帧 采用32bitCRC 目的地址段到数据末尾
PPP
HDLC CRC

###协议对比

协议名称 报文格式 工作层
ARP IP network
DHCP IP network

##application layer

###HTTP 请求报文和相应报文

###SMTP


##transport layer 传输层提供应用进程之间的逻辑通信,端到端; 复用和分用;报文差错检测(首部和数据部分);不同的传输协议(UDP和TCP);

###TCP

应用范围:FTP-21,SMTP-25.TELNET-23,HTTP-80

####特点

  • TCP在不可靠的IP层上实现可靠的数据传输协议;解决传输的可靠,有序,无丢失和不重复
  • 特点:面向连接,点对点,可靠,全双工通信,面向字节

####报文格式

0-7 8-15 16-23 24-31
源端口 --- 目的端口 ---
序号 --- --- ---
确认号 --- --- ---
窗口 ---
校验和 --- 紧急指针 ---
选项 --- --- 填充
  • 源端口,目的端口,各2B
  • 序号:4B,本报文段所发送的数据的第一个字节的编号
  • 确认号:4B,期望收到对方的下一个报文段的数据的第一个字节的序号
  • 数据便宜:4bit,tcp报文段的数据起始到首部起始的距离,单位为4B,即首部长度;最长为60B
  • 保留字段:6bit,置0
  • URG:1bit,1时尽快传输
  • ACK:1bit,1时确认号有效,连接建立后置位1
  • PSH:1bit,1时尽快交给应用层
  • RST:1bit,1时要重新建立连接
  • SYN:1bit,1时表明这是连接请求或接收的报文
  • FIN:1bit,1时表明数据传输完毕,释放连接
  • 窗口字段:2B,接收方让发送方设置其发送窗口的依据
  • 校验和:2B,校验12B伪首部+首部+数据
  • 选项:长度可变
  • 填充字段:是的首部为4B的整数倍

###UDP

应用范围:DNS-53,DHCP,TFTP-69,BOOTP-67,SNMP-161,NFS

####特点

  • UDP只在IP数据报服务上增加了两个基本的服务:复用,分用和差错检测

  • 无需建立连接;无连接状态;分组首部开销小;更好地控制发送的数据和发送时间,不做拥塞控制,效率高

####报文格式

0 - 15 16 - 31
源端口号 目的端口号
UDP长度 UDP校验和
data
  • 源端口:不需要是选0
  • 目的端口:
  • 长度:最小8,为首部长度
  • 校验和:可选,有错就丢弃

####UDP校验 在计算校验和的时候需要加上12B的伪首部^1用来计算IP报文段:IP地址,目的地址.0,协议,UDP长度

计算方式:二进制反码运算求和再取反

##network layer

###IP

####特点

####报文格式

0-7 8-15 16-23 24-31
版本+首部长度 区分服务 总长度 ---
标识 --- 标志+片偏移 ---
生存时间 协议 首部校验和 ---
源地址
目的地址
可选字段 ---- --- 填充
  • 版本:4bit,IPv4
  • 首部长度:4bit,单位4B,最长60B
  • 总长度:16bit,首部和数据之和,单位B,最大长度65535B
  • 标识:16bit,每产生一个数据报,加1,
  • 标志:3bit,MF=1表示后面还有分片,DF=0表示允许分片
  • 片偏移:13bit,分片后某片在原分组的位置,8B为单位
  • 首部校验和:校验分组的首部
  • 生存时间TTL:分组在网络中的寿命,路由转发一次减1,0时丢弃
  • 协议:8bit,标识上层协议,6为TCP,17为UDP
  • 源地址,目的地址:双方的IP

##datalink layer

###PPP

###HDLC

##MAC sublayer

###帧格式

8B 6B 6B 2B 46-1500B 4B
前导码 目的地址 源地址 类型 数据 FCS
  • 前导码:8B,用于时钟同步,7B的10,1B是帧开始定界符10101011
  • 地址:MAC地址,6B
  • 数据:46-1500B,CSMA/CD算法限制传输的最小长度为64B
  • FCS:4B,检验范围目的地址段到数据末尾,采用32bitCRC