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 显示帮助命令
ipconfig 显示自己ip地址
ping -t 长ping指定的主机,直到停止
ctrl+c 停止
ping -l size 发送缓存区大小(1600-2000)
ping -w 指定超时等待时间
ping -n 指定ping的次数
ping -a 将地址解析为主机名(显示主机名)
冲突域:当两台设备同时发出信息,相互干扰那么他们就是在同一冲突域
广播域:一台机器发送广播,能收到信息的机器都处于同一广播域 注:ping的通网络一定通,ping不通不一定网络不通。
1.3 出现错误的类型
1.4网络不通的排错思路
-
本机ping 127.0.0.1 检测自己网络是否有问题
-
ping网关地址 检测网关是否有问题
-
检查双方地址是否有问题
-
防火墙策略是否有问题( 需网络工程师 )
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)链路层(介质访问)。
TCP/IP与OSI模型比较
2.3 TCP/IP头部构成
2.4 TCP 3次握手 4次挥手
TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。
无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是全双工模式,所以需要四次挥手关闭连接。
第一次握手 当客户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次挥手
挥手请求可以是客户端,也可以是服务器端发起的,我们假设是客户端发起:
第一次挥手: 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.无数据恢复特性