HCIA——二、TCP及其三次握手,问题

这篇具有很好参考价值的文章主要介绍了HCIA——二、TCP及其三次握手,问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HCIA所有内容:

1、七层参考模型及IP讲解
2、TCP三次握手讲解
3、TCP四次挥手讲解及抓包分析
4、DHCP协议讲解及抓包分析
5、静态综合实验讲解
7、静态路由讲解
8、RIP路由信息协议讲解
9、动态路由协议讲解
10、抓包进行分析RIP以及OSPF的包
11、动态路由OSPF配置综合实验讲解
12、Vlan虚拟局域网技术讲解
13、ACL访问控制列表讲解
14、NAT技术讲解
15、网络综合实验讲解

TCP(传输控制协议)

名字得知肯定传输层协议。
面向连接: 因为在一个应用进程开始向另一个应用进程发送数据之前,这两个进程必须先相互“握手”,也就是说它们必须相互发送某些预备报文段,来确保数据传输的参数。
提供全双工服务: 如果一台主机上的进程A与另一台主机上的进程B存在一条TCP连接,那么应用层数据就可在从进程B流向进程A的;同时,也从进程A流向进程B。
点对点连接: 单个发送方与单个接收方之间的连接。

TCP报文段结构:

TCP为每块客户数据配上一个TCP首部,从而形成多个TCP报文段。
TCP报文段由首部字段和一个数据字段组成,数据字段包含一块应用数据。
HCIA——二、TCP及其三次握手,问题,计算机网络,HCIA,tcp/ip,网络,服务器
由上图可知,TCP与UDP相同,首部都包含源端口号以及母的端口号。
(用于多路复用/分解来自或送到上层应用的数据)
同时都包含了检验和字段。
32比特的序号字段以及32比特的确认号字段:
用来实现可靠数据传输服务。
16比特的接受窗口字段: 用于流量控制。
4比特的首部长度字段: 指示了以32比特的字为单位的TCP首部长度。
由于TCP选项字段的原因,TCP首部的长度是可变的,通常情况下,选项字段为空,所以TCP首部的典型长度为20字节。
可选与变长的选项字段: 用于发送方与接收方协商最大报文长度(MSS)时,或在高速网络环境下用作窗口调节因子时使用。
6比特的标志字段 ACK比特用于指示确认字段中的值是有效的,即该报文段包括一个对已被成功接收报文段的确认。

序号和确认号

序号

TCP报文段首部中两个最重要的字段是序号字段和确认号字段,是TCP可靠传输服务的关键部分。
TCP把数据看成一个无结构的,有序的字节流
一个报文段的序号 是报文段首字节的字节流编号。
举个例子:数据流由一个包含40000字节的文件组成,其MSS为1000字节,数据流的首字节编号为0。
MSS: 最大报文段长度(不包含首部)
那么,该TCP就会为数据流构建500个报文段,给第一个报文段分配序号0,第二个报文段分配序号1000,第三个报文段分配序号2000,那么每个序号被填入相应的TCP报文段首部的序号中。

确认号

首先TCP是全双工的,那么两个主机之间肯定可以相互发送且接收数据(都是同一条TCP连接的一部分)。
主机A填充报文段的确认号是主机A期望从主机B收到的下一字节的序号。

三次握手全过程

HCIA——二、TCP及其三次握手,问题,计算机网络,HCIA,tcp/ip,网络,服务器
首先, TCP采用三次握手的目的:
1.要使每一方能够确知对方的存在。
2.要允许双方协商一些参数。
比如:最大报文段长度,最大窗口大小,服务质量等。
3.能够对传输实体资源进行分配。
比如:缓存大小,连接表中的项目等

假定左边主机为客户端s,右边为服务端c

第一次握手:

主机A向主机B发送TCP连接请求数据包,其中包含了主机A的初始序列号seq=x(随机生成的)。
其中报文中同步标志位SYN=1,ACK=0:
表示这是一个TCP连接请求数据报文;
序列号seq=x:
表明传输数据时的第一个数据字节的序号为x。

第二次握手:

主机B收到了主机A的请求后,会发回连接确认数据包。(其实这就好比加上一个陌生人的微信,然后大多数人第一句都是你好,进行回复,也算是一种“机制协议”)
其中,确认报文段中,标识位SYN=1,ACK=1:
表示这是一个TCP连接响应的数据报文,其中包含了主机B的初始序列号,seq=y,以及主机B对主机A初始序号的确认号ack=seq+1=x+1

第三次握手:

主机A收到主机B的确认报文后,还需要做出确认,也就是发送一个序列号,seq=x+1,确认号为ack=y+1的报文。此时,主机B收到主机A的回复后,就可以数据传输了。

补充:

ACK: (Acknowledgment fieldsignificant)置1时表示确认号(AcknowledgmentNumber)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。
SYN: (Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分Connection Request和Connection Accepted。

面试中可能问到的问题

1.三次握手中,第一次握手丢失了

当客户端C和服务器S建立连接的时候,第一步客户端会发出一个SYN报文包含客户端的初始的序列号,如果说SYN报文中间传输丢失的话,那么这个时候客户端收不到服务端应该传输的SYN-ACK报文,就会触发重传机制,重传SYN报文,并且重传的SYN报文的客户端序列号是不变的。

2.三次握手中,第二次握手丢失了

首先明白第二次握手的意义,就是服务器给客户端回复SYN-ACK的过程,而且第二次握手的报文中包含了客户端的第一次ACK的确认报文。
如果客户端并没有收到服务端发送的SYN-ACK的话,那么客户端就会认为自己发送的SYN丢失,于是继续重传SYN。不过,第二次握手的报文中还包含服务端回复给客户端的SYN。
当服务端发送完SYN-ACK后,它就会开始还等待接收客户端发送的ACK,不过,第二次握手的包已经丢失了,收不到ACK,所以这个时候服务端认为自己所发送的报文丢失了,就会重传SYN-ACK。

客户端:当客户端达到一定重传次数时,依旧没有收到来自服务端的连接确认数据包,此时就会断开连接。
服务端: 服务端和客户端一样,不过,它等待的是客户端的第三次握手的确认报文。

3.三次握手中,第三次握手丢失了

当客户端收到服务端的SYN-ACK报文后,就会给服务端发送一个ACK报文,而第三次握手的ACK是对第二次握手的SYN的确认报文,所以当第三次握手丢失后,服务端接收不到客户端发送的ACK,就会认为发送的SYN-ACK丢失了,从而触发超时重传机制,重传SYN-ACK。

4.为什么两次握手不可以呢

为了防止已经失效的连接请求报文段突然又传送到了 B,因而产生错误。
例如:A 发出的第一个连接请求报文段并没有丢失,而是在网路结点长时间滞留了,以致于延误到连接释放以后的某个时间段才到达 B。本来这是一个早已失效的报文段。但是 B 收到此失效的链接请求报文段后,就误认为 A 又发出一次新的连接请求。于是就向 A 发出确认报文段,同意建立连接。
如果不进行第三次握手: B 发出确认后就认为新的运输连接已经建立了,并一直等待 A 发来数据。B 的许多资源就这样白白浪费了。如果采用了三次握手: 由于 A 实际上并没有发出建立连接请求,所以不会理睬 B 的确认,也不会向 B 发送数据。B 由于收不到确认,就知道 A 并没有要求建立连接。

5.为什么不需要四次握手?

首先,完全可靠的通信协议是不存在的。
在经过三次握手之后,客户端和服务端已经可以确认之前的通信状况,都收到了确认信息。所以即便再增加握手次数也不能保证后面的通信完全可靠,所以是没有必要的。

6.服务端端收到客户端的 SYN 后,为什么还要传回 SYN?

接收端传回发送端所发送的 SYN 是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。
SYN 是 TCP / IP 建立连接时使用的握手信号。
在客户机和服务器之间建立正常的 TCP 网络连接时,客户机首先发出一个 SYN 消息,服务器使用 SYN-ACK 应答表示接收到了这个消息,最后客户机再以 ACK1 消息响应。
这样在客户机和服务器之间才能建立起可靠的 TCP 连接,数据才可以在客户机和服务器之间传递。

7.传了 SYN,为什么还要传 ACK?

双方通信无误必须是两者互相发送信息都无误。 传了 SYN,证明发送方到接收方的通道没有问题,但是接收方到发送方的通道还需要 ACK 信号来进行验证。


  1. 确认字符,在数据通信传输中,接收站发给发送站的一种传输控制字符。它表示确认发来的数据已经接受无误。 ↩︎文章来源地址https://www.toymoban.com/news/detail-848318.html

到了这里,关于HCIA——二、TCP及其三次握手,问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机网络经典面试题】简述 TCP 三次握手和四次挥手的过程

    1)第一次握手:建立连接时,客户端向服务器发送SYN包(seq=x),请求建立连接,等待确认 2)第二次握手:服务端收到客户端的SYN包,回一个ACK包(ACK=x+1)确认收到,同时发送一个SYN包(seq=y)给客户端 3)第三次握手:客户端收到SYN+ACK包,再回一个ACK包(ACK=y+1)告诉服务

    2024年04月08日
    浏览(59)
  • 计算机网络—TCP和UDP、输入url之后显示主页过程、TCP三次握手和四次挥手

    TCP是面向连接的、可靠的,基于字节流的传输层通信协议 。 图片来源小林coding 序号:传输方向上字节流的字节编号。初始时序号会被设置一个随机的初始值(ISN),之后每次发送数据时,序号值 = ISN + 数据在整个字节流中的偏移。假设A - B且ISN = 1024,第一段数据512字节已经

    2024年02月14日
    浏览(49)
  • 计算机网络:TCP协议的三次握手和四次挥手与UDP协议区别.

    TCP协议: UDP协议: TCP协议与UDP协议都工作在传输层. TCP协议与UDP协议它们的目标: TCP协议与UDP协议的最大区别: TCP协议保持连接的三个关键步骤: UDP协议: TCP协议与UDP协议主要区别: 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的

    2023年04月15日
    浏览(53)
  • 「 计算机网络 」TCP的粘包拆包问题

    参考鸣谢 大病初愈,一分钟看懂TCP粘包拆包 雷小帅 TCP 的粘包拆包以及解决方案 一乐说 当我们在进行网络传输时,由于各种原因,数据包的发送和接收可能会出现粘包和拆包的问题。粘包和拆包都是数据分组错误的情况,其中粘包指的是多个数据包被合并成一个,而拆包则

    2024年02月01日
    浏览(39)
  • 【计算机网络】三次握手 四次挥手

    目录 1.三次握手 2.四次挥手 3.总结 三次握手和四次挥手是有连接特有的。三次握手,四次挥手指的是TCP有连接特点的中的步骤 。建立连接(三次握手),断开连接(四次挥手)。建立连接操作一般都是客户端主动发起,断开连接操作客户端和服务器都可以主动发起。 1.三次握手

    2024年02月08日
    浏览(42)
  • 计算机网络—TCP

    源端口号和目标端口号:16位字段,用于标识TCP连接的源和目标端口号。 序列号(Sequence Number):32位字段,用于标识发送的数据字节流中的第一个字节的序号。 确认号(Acknowledgment Number):32位字段,确认收到的字节序号,即期望接收的下一个字节的序号。 数据偏移:4位字

    2024年02月13日
    浏览(64)
  • 计算机网络-TCP协议

    TCP被称为面向连接的,因为在应用程序开始互传数据之前,TCP会先建立一个连接,该连接的建立涉及到 三次“握手 ”。 TCP的连接不是一条真实存在的电路,而是一条逻辑链接 ,其共同状态仅保留在两个通信端系统的TCP程序中。 TCP连接也是点对点的,即TCP连接只能存在于一

    2024年02月08日
    浏览(57)
  • 【计算机网络】TCP协议

    实验目的 应用所学知识: 1. 熟悉 TCP 的协议格式。 2. 理解 TCP 对序列号和确认号的使用。 3. 理解 TCP 的流量控制算法和拥塞控制算法。 实验步骤与结果 1.任务一: 将Alice.txt上传到服务器: 使用wireshark捕获数据包,看到计算机和gaia.cs.umass.edu之间的一系列 TCP 和 HTTP 通信,包

    2023年04月20日
    浏览(55)
  • 05.计算机网络——TCP协议

    TCP协议——TCP全称为 “ 传输控制协议 (Transmission Control Protocol)”,对数据的传输进行一个详细的控制。 源/目的端口号: 表示数据是从哪个进程来, 到哪个进程去; 32位序号/32位确认号: 用来支持确认应答和按序到达 4位TCP报头长度: 表示该TCP报头有多少个4字节大小; 6位标志位

    2024年02月16日
    浏览(51)
  • 【计算机网络】TCP协议详解

    目录 1. TCP协议头部格式 2. TCP协议原理  2.1 可靠传输机制 2.1.1 确认应答机制 2.1.2 超时重传机制 2.1.3 连接管理机制(三次握手,四次挥手) 2.1.4 流量控制 2.1.5 拥塞控制  2.2 效率机制  2.2.1 滑动窗口  2.2.2 延迟应答  2.2.3 捎带应答  3. 粘包问题  4. TCP的异常情况  5. TCP协议特

    2024年01月18日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包