网络协议栈基本知识

Posted mrlayfolk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络协议栈基本知识相关的知识,希望对你有一定的参考价值。

【注】:文章中的内容主要收集来自网上或者书籍中。

1、网络协议分层

按照分层的思想把网络协议栈进行分层主要有以下好处:

1.促进标准化工作,允许各个供应商进行开发

2.各层间相互独立,把网络操作分成低复杂单元

3.灵活性好,某一层变化不会影响到其它层

4.各层间通过一个接口在相邻层上下通信

OSI七层模型和TCP/IP五层模型的对比如下,我们现在用的是五层协议模型:

技术图片

2、PDU、封装和解封装

  • PDU(protocol data unit):每一层使用自己层的协议和别的系统的对应层相互通信,协议层的协议在对等层之间交换的信息叫协议数据单元
  • 上层:message
  • 传输层:segment
  • 网络层:packet
  • 数据链路层:frame
  • 物理层:bit
  • 封装:数据要通过网络进行传输,要从高层一层一层的向下传送,如果一个主机要传送数据到别的主机,先把数据装到一个特殊协议报头中,这个过程叫封装
  • 封装分为:切片和加控制信息
  • 解封装:上述的逆向过程

数据进入TCP/IP协议栈时的封装过程如下:

技术图片

数据进入TCP/IP协议栈时的解封装过程如下:

技术图片

3、以太帧和常见的报文格式

(1)以太网帧(Ethernet II Frame)

技术图片

  • D-MAC:目的MAC地址
  • S-MAC:源MAC地址
  • 类型域:表示帧里面上层协议数据的类型,0x0800代表IP协议帧,0x0806代表ARP协议帧
  • CRC:帧校验

技术图片

(2)IP数据报

技术图片

  • 版本号:4代表IPv4,
  • 头长度:报头的长度,值为4字节的倍数,故首部长度最大为60字节
  • 服务类型:暂未使用
  • 总长度:IP数据报的长度(报头区+数据区),单位为字节,故总长度最大为65535字节,但总长度不能超过最大传输单元MTU
  • 标识:一个计数器,用来产生数据报的标识
  • 标志:占3位,最低位MF,为1表示还有分片,中间为DF,为0,表示允许分片
  • 片偏移:较长的分组在分片后,某片在原分组中的相对位置,单位为8字节
  • TTL:生存时间,数据报可以经过的最大路由器数
  • 上层协议标识:1:ICMP,2:IGMP、6:TCP、17:UDP等;

分片举例:

技术图片

IP数据报解析:

技术图片

?

(3)TCP数据报

技术图片

  • 协议、源IP、源端口、目的IP、目的端口确定一个TCP连接
  • 顺序号:TCP段所发送的数据部分第一个字节的序号
  • 确认号:期望收到对方下次发送的数据的第一个字节的序号
  • 头部长度:单位为4字节,因此TCP首部的最大长度为60字节
  • 窗口大小:窗口通告值,发送方根据接收方的窗口告值调整窗口大小
  • 紧急指针:指示紧急数据在报文段中的结束位置此时URG置位
  • URG:表示紧急指针字段有效
  • ACK:表示确认号字段有效
  • PSH:表示当前报文需要推操作
  • RST:置位表示复位TCP连接
  • SYN:用于建立TCP连接时同步序列号
  • FIN:用于释放TCP连接时标识发送方比特流结束

TCP报文解析:

技术图片

(4)UDP数据包

技术图片技术图片

常见协议对应的端口号:

UDP DHCP服务器端:67,DHCP客户端:68,DNS服务:53

TCP POP3(邮件接收协议):110,SMTP(邮件传输协议):25,HTTP服务:80

TCP FTP:数据传输为20,控制命令传输为21,Telnet:23

端口号范围为:1~65535,1~1024为熟知端口号,1025~65535称为动态端口

?

?

?

?

?

?

?

?

?

?

?

?

以上是关于网络协议栈基本知识的主要内容,如果未能解决你的问题,请参考以下文章

Linux网络协议栈源码分析基础知识

SylixOS网络协议栈数据收发流程

理解 Linux 网络栈 (Linux networking stack):Linux 网络协议栈简单总结

-1-7 java 网络编程基本知识点 计算机网络 TCP/IP协议栈 通信必备 tcp udp

[架构之路-41]:目标系统 - 系统软件 - Linux下的网络通信-1-计算机网络拓扑架构ISO协议栈以太网协议栈与工作原理

[架构之路-41]:目标系统 - 系统软件 - Linux下的网络通信-1-计算机网络拓扑架构ISO协议栈以太网协议栈与工作原理