1. 首页
  2. 电商新闻

网络协议栈基本知识_字节

原标题:网络协议栈基本知识1、网络协议分层按照分层的思想把网络协议栈进行分层主要有以下好处:1.促进标准化工作,允许各个供应商进行开发2.各层间相互独立,把网络操作分

原标题:网络协议基本知识

1、网络协议分层

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

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

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

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

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

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

2、PDU、封装和解封装

PDU(protocol data unit):每一层使用自己层的协议和别的系统的对应层相互通信,协议层的协议在对等层之间交换的信息叫协议数据单元

  1. 上层:message
  2. 传输层:segment
  3. 网络层:packet
  4. 数据链路层:frame
  5. 物理层:bit
  6. 封装:数据要通过网络进行传输,要从高层一层一层的向下传送,如果一个主机要传送数据到别的主机,先把数据装到一个特殊协议报头中,这个过程叫封装
  7. 封装分为:切片和加控制信息
  8. 解封装:上述的逆向过程

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

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

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

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

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

(2)IP数据报

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

分片举例:

IP数据报解析:

(3)TCP数据报

协议、源IP、源端口、目的IP、目的端口确定一个TCP连接

  1. 顺序号:TCP段所发送的数据部分第一个字节的序号
  2. 确认号:期望收到对方下次发送的数据的第一个字节的序号
  3. 头部长度:单位为4字节,因此TCP首部的最大长度为60字节
  4. 窗口大小:窗口通告值,发送方根据接收方的窗口告值调整窗口大小
  5. 紧急指针:指示紧急数据在报文段中的结束位置此时URG置位
  6. URG:表示紧急指针字段有效
  7. ACK:表示确认号字段有效
  8. PSH:表示当前报文需要推操作
  9. RST:置位表示复位TCP连接
  10. SYN:用于建立TCP连接时同步序列号
  11. 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称为动态端口

(5)ARP协议

ARP(Address Resolution Protocol)地址解析协议,是根据 IP 地址获取物理 MAC 地址的一个 TCP/IP 协议。

ARP 高速缓冲表:用来记录 IP 和 主机 MAC 地址的对应关系。会不断更新。

功能:通过目标设备的 IP 地址,查询目标设备的 MAC 地址,同时维护 ARP 高速缓冲表,以保证通信的顺利进行。

ARP分组格式

  • 硬件类型:以太网为1
  • 协议类型:网络层协议类型,IP协议为0x0800
  • OP:操作码,ARP请求为1,ARP应答为2

(6)ICMP协议

ICMP 是 “Internet Control Message Protocol”(网络控制报文协议)的缩写,用于在 IP 主机、路由器之间传递控制消息。

控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

ICMP 层区分不是很明显,一般划分在 IP 层中,通过 IP 包来封装ICMP数据 ,在实际传输中数据包的格式一般都是 IP 包 + ICMP包的格式

ICMP包格式:

代码:用来表示ICMP报文类型的少数参数,

例如:代码值为0,表示网络不可达;代码值为1,表示主机不可达

(7)DNS协议简介

DNS(Domain Name System):域名系统,将域名和IP地址相互映射的一个分布式数据库

采用Client/Sever工作模式

DNS 协议运行在 UDP 协议之上,使用端口号 53

过程图解

(8)DHCP协议简介

  1. DHCP(Dynamic Host Configuration Protocol):
  2. 动态主机配置协议采用Client/Sever工作模式
  3. 为主机提供配置参数、自动分配可重复利用的网络地址
  4. DHCP 协议运行在 UDP 协议之上,
  5. 服务器端口号 67,客户端口号68

4、ping演示

Ping命令是为了检查网络的连接状况而使用的网络工具之一,用来检测数据包到达目的主机的可能性。

原理:使用ICMP协议的回送请求、回送应答。客户端发送回送请求给服务器,服务器返回一个ICMP回应应答。

Ping过程图解:

  1. 首先开发板要解析百度的域名,获取到百度主机的 IP 地址,涉及到 DNS 协议,传输层用的是 UDP 协议
  2. DNS 主机利用 UDP 协议,回复百度的 IP 地址给开发板。
  3. 现在开发板要发送 Ping 请求包给百度主机,但是发现百度主机 IP 地址与自己不在同一网段,因此要发送 Ping 请求包给默认网关。
  4. 要发送给默认网关的时候,忽然发现并没有默认网关对应的 MAC 地址,因此发送一个 ARP 广播包,如果交换机存储了默认网关的 MAC 地址,就直接告诉开发板默认网关的 MAC 地址,否则就会向所有端口发送ARP广播,直到路由1收到了报文后,立即响应,单播自己的 MAC 地址给开发板。这样开发板就可以把 Ping 包发送给默认网关(路由1)了。
  5. 然后路由1 经过路由协议,经过一个个路由的转发,最后发送到了百度的主机上。百度主机检测到 IP 是自己的 IP,接收并处理 Ping 请求,接着百度主机发送一个 Ping 回应报文给开发板。

5、TCP客户端服务器通信演示

TCP(传输控制协议):提供一种面向连接的、可靠的传输层协议(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。

TCP三次握手过程:

TCP四次挥手过程:

ps:IT技术、架构、职场、有意思的事儿,请关注我的公众号360linker

【本文作者】:亿闻天下网,商业用途未经许可不得转载,非商业用途转载注明出处原文链接:https://cqsoo.com/esn/65258.html

【版权与免责声明】:如发现内容存在版权问题,烦请提供相关信息发邮件至 kefu@cqsoo.com ,

并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。反馈给我们

本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。

发表评论

登录后才能评论
Copyright 2007-2019 亿闻天下网 / 渝ICP备89217412123号-1  / 本站由wordpress、阿里云、群英、百度云提供驱动力
QR code