(一)ping
1、 ping命令
- 不是依托于TCP或者UDP这种传输层协议的,而是依托于ICMP协议实现的
2、 ICMP协议
- 是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
- 定义:是一个网络层协议。一个新搭建好的网络,往往需要先进行一个简单的测试来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。所以我们就需要一种协议来完成这样的功能。ICMP协议就是为了更高效的转发IP数据报和提高交付成功的机会。
- 功能:1. 确认IP包是否成功到达目标地址;2. 通知在发送过程中IP包被丢弃的原因
3、 ping用到了哪些网络协议
- 通过DNS协议,将ping后接的域名转换为ip地址。(DNS使用的传输层协议是UDP)
- 通过ARP解析服务,由ip地址解析出MAC地址,以在数据链路层传输。
- ping是为了测试另一台主机是否可达,发送一份ICMP回显请求给目标主机,并等待ICMP回显应答。(ICMP用于在ip主机、路由器间传递网络是否通畅、主机是否可达等控制信息)
(二)数据包封装解封装过程
1、封装
是将对象运行所需的资源封装在程序对象中
- 应用层:原始数据被转换成二进制数据
- 传输层:二进制数据被分割成小的数据段,并封装TCP头部 (数据段)(TCP头部的关键信息–端口号)
- 网络层:传输层传来的数据被封装上IP头部 (数据包)(IP头部的关键信息–IP地址)
- 数据链路层:网络层传来的数据被封装上MAC头部 (数据帧)(MAC头部的关键信息–MAC地址)
- 物理层:二进制数据组成的比特流转化为电信号在网络中传输 (比特流)
2、 解封装:接收数据的时候,会一层一层的把包头去掉
- 物理层:将电信号转化为二进制数据,并将其送至数据链路层
- 数据链路层:查看MAC地址,地址是自己,就拆掉MAC头部,继续传输;地址不是自己,就丢弃数据
- 网络层:查看IP地址,地址是自己,就拆掉IP头部,继续传输;地址不是自己,就丢弃数据
- 传输层:查看TCP头部,判断应该传到哪里,然后重组数据,传输到应用层
- 应用层:二进制转化为原始数据