网络协议学习

网络协议栈基本知识

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

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

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

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

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

OSI七层模型和TCP/IP五层模型的对比如下,我们现在用的是五层协议模型:图片中ARAP 应该为RARP
在这里插入图片描述

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

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

(5)ARP协议
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210531105150345.png

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协议简介

DHCP(Dynamic Host Configuration Protocol):动态主机配置协议
采用Client/Sever工作模式
为主机提供配置参数、自动分配可重复利用的网络地址
DHCP 协议运行在 UDP 协议之上,服务器端口号 67,客户端口号68
4、ping演示
Ping命令是为了检查网络的连接状况而使用的网络工具之一,用来检测数据包到达目的主机的可能性。

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

Ping过程图解:
在这里插入图片描述

首先开发板要解析百度的域名,获取到百度主机的 IP 地址,涉及到 DNS 协议,传输层用的是 UDP 协议
DNS 主机利用 UDP 协议,回复百度的 IP 地址给开发板。
现在开发板要发送 Ping 请求包给百度主机,但是发现百度主机 IP 地址与自己不在同一网段,因此要发送 Ping 请求包给默认网关。
要发送给默认网关的时候,忽然发现并没有默认网关对应的 MAC 地址,因此发送一个 ARP 广播包,如果交换机存储了默认网关的 MAC 地址,就直接告诉开发板默认网关的 MAC 地址,否则就会向所有端口发送ARP广播,直到路由1收到了报文后,立即响应,单播自己的 MAC 地址给开发板。
这样开发板就可以把 Ping 包发送给默认网关(路由1)了。
然后路由1 经过路由协议,经过一个个路由的转发,最后发送到了百度的主机上。百度主机检测到 IP 是自己的 IP,接收并处理 Ping 请求,接着百度主机发送一个 Ping 回应报文给开发板。
5、TCP客户端服务器通信演示
TCP(传输控制协议):提供一种面向连接的、可靠的传输层协议(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。

TCP三次握手过程:
在这里插入图片描述

TCP四次挥手过程:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值