当前位置:   article > 正文

了解TCP协议,IP协议、ICMP协议和ARP协议(TCP报文,TCP的分成管理,TCP与UDP,TCP的三次握手四次挥手原理)_arp协议和tcp协议关系

arp协议和tcp协议关系

了解TCP/IP协议

TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。

TCP报文格式

在这里插入图片描述

源端口号:16位字段,为发送方进程对应的端口号。

目标端口号:16位字段,对应的是接收端的进程,接收端收到数据后,根据这个端口号来确定吧这个数据送给哪个应用程序的进程。

首部长度:一般是20字节,最大可以扩展为60字节。用它可以确定首部数据结构的字节长度。

SYN:同步序号位,TCP需要建立连接时将该值设为1

ACK:确认序号位,当该位为1时,用于确认发送方的数据
FIN:当TCP断开连接时将该位置为1

TCP/IP 的分层管理

TCP/IP协议里最重要的一点就是分层。TCP/IP协议族按层次分别为 应用层,传输层,网络层,数据链路层,物理层。当然也有按不同的模型分为4层或者7层的。

image-20191027150352733

  1. 物理层

    该层负责 比特流在节点之间的传输,即负责物理传输,这一层的协议既与链路有关,也与传输的介质有关。通俗来说就是把计算机连接起来的物理手段。

  2. 数据链路层

    控制网络层与物理层之间的通信,主要功能是保证物理线路上进行可靠的数据传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据结构的结构包,他不仅包含原始数据,还包含发送方和接收方的物理地址以及纠错和控制信息。

  3. 网络层

    决定如何将数据从发送方路由到接收方。

  4. 传输层

    该层为两台主机上的应用程序提供端到端的通信。传输层有两个传输协议:TCP(传输控制协议)和 UDP(用户数据报协议)。其中,TCP是一个可靠的面向连接的协议,udp是不可靠的或者说无连接的协议

  5. 应用层

    应用程序收到传输层的数据后,接下来就要进行解读。解读必须事先规定好格式,而应用层就是规定应用程序的数据格式。主要的协议有:HTTP.FTP,Telent等。

TCP与UDP

image-20191027212512703

TCP的三次握手与四次挥手

  • 第一次握手:建立连接。客户端发送连接请求报文段,并将syn(标记位)设置为1,Squence Number(数据包序号)(seq)为x,接下来等待服务端确认,客户端进入SYN_SENT状态(请求连接);
  • 第二次握手:服务端收到客户端的 SYN 报文段,对 SYN 报文段进行确认,设置 ack(确认号)为 x+1(即seq+1 ; 同时自己还要发送 SYN 请求信息,将 SYN 设置为1, seq为 y。服务端将上述所有信息放到 SYN+ACK 报文段中,一并发送给客户端,此时服务器进入 SYN_RECV状态。
  • 第三次握手:客户端收到服务端的 SYN+ACK(确认符) 报文段;然后将 ACK 设置为 y+1,向服务端发送ACK报文段,这个报文段发送完毕后,客户端和服务端都进入ESTABLISHED(连接成功)状态,完成TCP 的三次握手。

在这里插入图片描述

四次挥手如下所示:

  • 第一次挥手

    客户端设置seq和 ACK ,向服务器发送一个 FIN(终结)报文段。此时,客户端进入 FIN_WAIT_1 状态,表示客户端没有数据要发送给服务端了。
    FIN:断开连接标识,提出断开连接的一方将这个值设为1.

    ACK:ACK=1,表示确认序列号字段有效。

  • 第二次挥手

    服务端收到了客户端发送的 FIN 报文段,向客户端回了一个 ACK 报文段。

  • 第三次挥手

    服务端向客户端发送FIN 报文段,请求关闭连接,同时服务端进入 LAST_ACK 状态。

  • 第四次挥手

    客户端收到服务端发送的 FIN 报文段后,向服务端发送 ACK 报文段,然后客户端进入 TIME_WAIT 状态。服务端收到客户端的 ACK 报文段以后,就关闭连接。此时,客户端等待 2MSL(指一个片段在网络中最大的存活时间)后依然没有收到回复,则说明服务端已经正常关闭,这样客户端就可以关闭连接了。

在这里插入图片描述

最后再看一下完整的过程:

img

为什么要三次握手?

为了防止已失效的连接请求报文突然又传送到了服务端,因为产生错误。

具体解释: “已失效的连接请求报文段”产生情况:

client 发出的第一个连接请求报文段并没有丢失,而是在某个网络节点长时间滞留,因此导致延误到连接释放以后的某个时间才到达 service。如果没有三次握手,那么此时server收到此失效的连接请求报文段,就误认为是 client再次发出的一个新的连接请求,于是向 client 发出确认报文段,同意建立连接,而此时 client 并没有发出建立连接的情况,因此并不会理会服务端的响应,而service将会一直等待client发送数据,因此就会导致这条连接线路白白浪费。

如果此时变成两次挥手行不行?

这个时候需要明白全双工与半双工,再进行回答。比如:

  • 第一次握手: A给B打电话说,你可以听到我说话吗?
  • 第二次握手: B收到了A的信息,然后对A说: 我可以听得到你说话啊,你能听得到我说话吗?
  • 第三次握手: A收到了B的信息,然后说可以的,我要给你发信息啦!

在三次握手之后,A和B都能确定这么一件事: 我说的话,你能听到; 你说的话,我也能听到。 这样,就可以开始正常通信了,如果是两次,那将无法确定。

为什么要四次挥手?

TCP 协议是一种面向连接,可靠,基于字节流的传输层通信协议。TCP 是全双工模式(同一时刻可以同时发送和接收),这就意味着,当主机1发出 FIN 报文段时,只是表示主机1已结没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回 ACK报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会中断这次TCP连接。

数据已经全部发送完毕;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回 ACK报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会中断这次TCP连接。

IP数据包格式

第一层

版本:该字段包含的是IP的版本号,4比特。目前IP的版本为4(即IPv4)。

首部长度:该字段用于表示IP数据包头长度,4比特。IP数据包头最短为20字节,但是其长度是可变的,具体长度取决于可选字段的长度。

优先级与服务类型:该字段用于表示数据包的优先级和服务类型,8比特。用来区分哪些数据包优先级高和哪些数据优先级低。例:同时迅雷下载和聊QQ,其中QQ的优先级就比迅雷下载的优先级高,否则就需要等待迅雷下载完毕才能进行QQ聊天。

总长度:该字段用以指示整个IP数据包的长度,16比特。最长为65535(2^16-1)字节,包括包头和数据。

第二层 上层的数据到IP层会被分片

标识符:该字段用于表示IP数据包的标识符,16比特。当IP对上层数据分片时,它将给所有的分片分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误的重组。标识符字段用于标识一个数据包,以便接收节点可以重组被分片的数据包。

标志:标志字段,3比特。标志和分片一起被用来传递信息。例如,当数据包从一个以太网发送到另一个以太网时,指示对当前的包不能进行分片或者一个包被分片后指示在一系列的分片中最后一个分片是否已发出。

段偏移量:该字段用于表示段偏移量,13比特。段偏移量中包含的信息是在一个分片序列中如何将分片重新连接起来。

第三层

TTL:Time to live 该字段用于表示IP数据包的生命周期,8比特。该字段包含的信息可以防止一个数据包在网络中无限循环的转发下去。即防止路由环路。一个数据包经过每一个路由器,TTL将减去1。

协议号:协议字段,8比特。该字段用以指示在IP数据包中封装的是哪一个协议,是TCP还是UDP,TCP的协议号为6,UDP的协议号为17.

首部校验和:该字段用于表示校验和,16比特。校验和是16位的错误检测字段。目的主机和网络中的每个网关都要重新计算包头的校验和,就如同源主机做的一样。如果数据包没有被改动过,两个计算结果应该是一样的。

第四层

源IP地址:该字段用于表示数据包的源地址,32比特。这是一个网络地址,指的是发送该数据包设备的网络地址。

第五层

目标IP地址:该字段用于表示数据包的目的地址,32比特。这也是一个网络地址,但指的是接收节点的网络地址。

ICMP协议

ICMP协议:主要用于在IP网络中发送控制消息,提供在通信环境中可能发生的各种问题的反馈。

ICMP采取“错误侦测与回馈机制”,通过IP数据包封装,用来发送错误和控制消息。

ICMP协议号是1

ICMP协议的基本使用

1ping命令的返回信息

不能建立连接的应答:

在这里插入图片描述

连接超时的应答

在这里插入图片描述

ping命令的常用参数

1.-a 可以显示对方主机名称

2.-l 可以设定ping包的大小。一般情况下,ping包的大小为32字节。

3.-t 长ping命令

在window系统中,默认情况会发送4个ping包,如果在ping命令后面加上参数“-t”,系统会一直不停的ping下去。按ctrl+c结束。

ARP协议

ARP实际上是一个广播。ARP(Address Resolution Protocol,地址解析协议)的基本功能是负责将一个已知的IP地址解析成MAC地址,以便在交换机上通过MAC地址进行通信。

ARP协议工作原理

ARP缓存表:老化时间:120s(绑定的不受老化时间影响)

ARP缓存表是主机存储在内存中的一个IP地址和MAC地址对应表。在windows系统中可以使用命令“arp-a”来显示ARP缓存表。

ARP协议工作过程
1.PC1想要发送数据给PC2,查看缓存表里没有PC2的MAC地址
2.PC1发送(需要10.0.0.2的MAC地址)的广播。
3.所有主机收到ARP请求的广播,PC2回复ARP应答 ,其他主机丢弃
4.PC1将PC2的MAC地址保存到缓存表中,这时就可以和PC2发送数据了。

ARP协议攻击原理

ARP协议实际上是一种广播,广播是请求+回应,在回应过程中可以出现bug,可以主动回应欺骗其他主机或者网关等

解决方法:
主机如何绑定ARP来防止ARP欺骗

如何查找IP的接口号:netsh interface ipv4 show neighbors

格式:netsh interface ipv4 set neighbors 接口号 IP地址 IP地址对应的MAC地址

附:如何解除绑定

格式:netsh -c “i i” delete neighbors idx号 IP地址 IP地址对应的MAC地址

如何查看idx号:netsh i i show in

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/284506
推荐阅读
相关标签
  

闽ICP备14008679号