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