ICMP协议,Tcp/IP协议,Tcp三次握手和UDP协议

615 阅读6分钟

ICMP协议,Tcp协议,Tcp三次握手和UDP协议

1.ICMP协议

1.1 ICMP协议的作用

Internet控制消息协议ICMP (Internet Control Message Protocol)是IP协议的辅助协议 ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。

1.2ICMP协议功能(ping)

Ping是网络设备、Windows、Unix和Linux平台上的一个命令,其实是一个小巧而实用的应用程序,该应用基于ICMP协议,常用于探测到达目的节点的网络可达性,可以检测网络的双向联通性。

ping的格式: ping 空格 ip地址或域名(win+r cmd 进入命令行)

ping的选项

ping --help 显示帮助命令

image.png ipconfig 显示自己ip地址 image.png

ping -t 长ping指定的主机,直到停止

ctrl+c 停止

image.png

ping -l size 发送缓存区大小(1600-2000)

image.png ping -w 指定超时等待时间

image.png ping -n 指定ping的次数

image.png ping -a 将地址解析为主机名(显示主机名)

冲突域:当两台设备同时发出信息,相互干扰那么他们就是在同一冲突域

广播域:一台机器发送广播,能收到信息的机器都处于同一广播域 注:ping的通网络一定通,ping不通不一定网络不通。

1.3 出现错误的类型

image.png

1.4网络不通的排错思路

  1. 本机ping 127.0.0.1 检测自己网络是否有问题

  2. ping网关地址 检测网关是否有问题

  3. 检查双方地址是否有问题

  4. 防火墙策略是否有问题( 需网络工程师 )

1.5 ARP协议

ARP协议:地址解析协议,将IP地址转换成MAC地址完成封装;检测地址冲突。

  • 无故ARP:当一台设备获取到一个IP地址时,会自动发送一个IP地址(源目IP为自己)检测是否有设备使用此地址。

命令:arp -a 查看ARP缓存表 arp -d 清除ARP缓存

2.TCP/IP协议

2.1TCP/IP协议介绍

TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议/因特网互联协议,TCP/IP是一个Protocol Stack(协议栈),包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议。最早发源于1969年美国国防部(缩写为DoD)的因特网的前身ARPA网络项目,1983年1月1日,TCP/IP取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护国防高级研究计划局DARPA与BBN技术公司、斯坦福大学共定义了四层,和 OSI参考模型的分层有对应关系和伦敦大学学院签约,在多个硬件平台上开发协议的操作版本。 在协议开发过程中,数据包路由层的版本号从版本 1 进展到版本 4,后者于 1983 年安装在 ARPANET 中。它被称为互联网协议版本4(IPv4)作为协议,仍在互联网使用,连同其目前的继承,互联网协议版本6(IPv6)。 NCP:网络核心协议 (NCP:Network Core Protocol)

TCP面向连接的协议:TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。

面向连接网络协议:是指通信双方之间在进行通信之前要先建立连接。比如打电话,双方通话前需要先建立连接。等数据发送结束后,双方再断开连接。

2.2 TCP/IP分层

共定义了四层,和 OSI参考模型的分层有对应关系

RFC官方分为四层: Application Layer应用层,Transport Layer 传输层,Internet Layer互联网层,Link Layer(media-access)链路层(介质访问)。 image.png TCP/IP与OSI模型比较 image.png

2.3 TCP/IP头部构成

image.png

2.4 TCP 3次握手 4次挥手

TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。

无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是全双工模式,所以需要四次挥手关闭连接。

image.png 第一次握手 当客户A向服务器B发送请求连接的报文时:

seq序列号=x(x为随机) SYN=1(表示发送连接请求)

第二次握手服务器B收到客户A发来的请求报文后,同意建立连接,则向客户A发送确认报文:

seq序列号=y(这时B也会产生一个序列号y,和客户A的序号不相关)

ack确认号=x+1(Seq序列号x+1,表示确认收到了A的请求)

ACK=1(表示这是条确认请求) SYN=1(同时也发送一个建立连接的请求)

第三次握手客户A进程收到服务器B进程的确认后,还要向服务器B给出确认,然后连接成功建立:

seq序列号=x+1(这时客户A的序号为1) ack确认号=y+1(表示确认收到了服务器B的连接请求)

ACK=1(表示这是确认报文)

4次挥手

image.png 挥手请求可以是客户端,也可以是服务器端发起的,我们假设是客户端发起:

第一次挥手: A发起挥手请求,向B发送请求断开的报文FIN=1(请求断开连接),序列号seq=u(系统随机),此时,A进入FIN_WAIT_1(终止等待1)状态,这表示A没有数据要发送给B了。

第二次分手:B收到了A发送的FIN=1报文段,向A发送ACK=1(表示确认),seq=v(B的序列号),ack=u+1(表示收到A的断开请求),A进入FIN_WAIT_2(终止等待2)状态,B告诉A,我确认并同意你的关闭请求。

第三次分手: B向A发送标志位是FIN的报文段,请求关闭连接,同时B进入LAST_ACK(最后确认)状态。

第四次分手 : A收到B发送的FIN报文段,向B发送标志位是ACK=1的报文段,然后A进入TIME_WAIT(时间等待)状态。B收到A的ACK报文段以后,就关闭连接。此时,A等待2MSL的时间后依然没有收到回复,则证明B已正常关闭,A也可以关闭连接了。

MSL :Maximum Segment Lifetime 解除 连接关系 等待2MSL 确认收到的数据是否完整

2.5 TCP特性

1.工作在传输层

2.面向连接协议

3.全双工协议

4.半关闭

5.错误检查

6.将数据打包成段,排序

7.确认机制

8.数据恢复,重传

9.流量控制,滑动窗口

3.UDP协议

UDP特性

1.工作在传输层

2.提供不可靠的网络访问

3.非面向连接协议

4.有限的错误检查

5.传输性能高

6.无数据恢复特性