TCP的三次握手和四次挥手

本文详细介绍了TCP协议的三次握手和四次挥手过程,阐述了这两个机制在确保可靠连接建立和安全断开中的作用。三次握手确保了连接的安全建立,而四次挥手则保证了双方都能正确接收到断开连接的信号。同时,解释了TCP报文段的结构及其各个字段的功能,如序列号、确认号、标志位等,展示了TCP如何实现可靠传输和流量控制。
摘要由CSDN通过智能技术生成

关于TCP的三次握手和四次挥手的面试回答:面试官你好,这个问题我是知道的,TCP协议是传输层的一个安全可靠的传输协议,三次握手的机制,是保证能建立一个安全可靠的连接,第一次握手是由客户端发起的,客户端会像服务器端发送一个报文,在报文里面SYN位是置1的,当服务端收到这个报文的时候,就知道客户端要和我发起一个新的连接,于是服务器端就向客户端发送一个确认消息报文,这个消息报文中ACK位置是置1的。以上两次握手之后,对于客户端而言,其实是已经知道了所有的信息了,即我能向服务器端发消息,也能收到服务器端发来的消息。但是对于服务端而言,两次握手是不够的,因为到目前为止,服务端只知道,客户端发给我的消息我能收到,但是服务器端发给客户端的消息,客户端能不能收到是不知道的,所以还要进行第三次握手,即当客户端收到服务端发过来的确认消息的报文后,还要继续给服务器端进行一个回应,也是一个ACK位,置1的一个确认消息,至此,通过以上的三次握手之后,无论时客户端还是服务端,都彼此知道了我既能给对方发消息,也能够收到对方的消息,那么这个连接就可以被安全的建立了。四次挥手机制,也是由客户端首先发起的,客户端会发送一个报文,在报文里面,FIN位是置1的,当服务端收到这个报文之后,我就知道了客户端想要和我断开连接,但是此时服务器端不一定能够做好断开的准备,因为客户端发起这个断开连接消息的时候,对于服务端而言,它极有可能还有未发送完的消息要继续发送,因此对于服务器端而言,此时只能进行一个消息确认,就是我先告诉客户端,我要知道你要和我断开连接了,但是我这边可能还没有做好准备,你还需要等我一下,等会我会告诉你能否断开连接,发完这个确认消息之后,稍过片刻之后,就会发送一个断开连接的报文,也是一个FIN位置1的一个报文,是由服务端发给客户端的,这个报文表示了服务端已经做好了断开连接的准备了,那么当这个报文发给服务端的时候,客户端同样要向服务端发送一个消息确认的报文,一共有四次,通过这四次的相互沟通和连接,我就知道了,不管时服务器端还是客户端都已经做好了断开连接的准备,于是连接就可以被断开了,这是我对三次握手和四次挥手的理解。

TCP报文格式:
TCP报文
TCP报文是TCP层传输的数据单元,也叫报文段。
(1) 端口号:用来标识同一台计算机的不同的应用进程。
TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一一条TCP连接。

  1. 源端口:源端口和IP地址的作用是标识报文的返回地址。
  2. 目的端口:端口指接受计算机上的应用程序接口。

(2) 序列号与确认号:是TCP可靠传输的关键部分。序号是报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序列号。举例:一个报文段的序号为300,此报文数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。确认号ack,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志位1时才有效。比如建立连接时,SYN报文的ACK标志位置0。
(3) 数据偏移:由于首部可能含有可选项内容,因此TCP报头的长度时不确定的,报头不包含任何任选字段则长度位20字节,4位首都长度字段能表示的最大值位1111转化为10进制位15,15*32/8 = 60,故报头最大长度位60字节。报首长度也叫数据偏移,是因为部首长度实际上指示了数据去在报文段中的起始偏移值。
(4) 保留: 为将来定义新的用途保留,现在一半置0。
(5) 标志位:一共6个,每一个标志位表示一个控制功能。

  1. URG: 紧急指针标志,为1时表示,紧急指针有效,为0则忽略紧急指针。
  2. ACK: 确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
  3. PSH: push标志,为1表示是带有push标志的数据,指示接收方在接受到该报文段后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
  4. RST: 重置连接标志,用于重置由于主机崩溃或其它原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
  5. SYN: 同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应带捎带一个确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。
  6. FIN: finish标志,用于释放连接,为1时表示已经没有数据发送了,即关闭本方数据流。

(6) 窗口:滑动窗口大小,用来告知发送端接收端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小是一个16bit位字段,因此窗口大小最大为65535。
(7) 校验和: 奇偶校验,此校验和是对整个的TCP报文段,包括TCP头部和TCP数据,以16位字进行计算所得。由发送端计算和存储,并由接收端进行验证。
(8) 紧急指针:只有当URG标志置1时紧急指针才有效。紧急指针式一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。
(9) 选项: 最常见的可选字段是最长报文大小,又称为MSS,每个连接方通常都在通信的第一个报文段(位建立连接而设置SYN标志位1的那个段)中指明这个选项,它表示本端能接收的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。
(10) 数据部分: TCP报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文端仅有TCP首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文端。
TCP三次握手:
TCP三次挥手
TCP四次挥手:
TCP四次挥手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值