精华内容
下载资源
问答
  • 二、建立TCP连接,三次握手 客户端:我要对你讲话,你能听到吗; 服务端:我能听到;而且我也要对你讲话,你能听到吗; 客户端:我也能听到。 ……. 互相通话 三、关闭TCP连接,四次挥手 客户端:我说完了,我要...

    一、标识符

    seq:"sequance"序列号;ack:"acknowledge"确认号;SYN:"synchronize"请求同步标志;;ACK:"acknowledge"确认标志";FIN:"Finally"结束标志。

    二、建立TCP连接,三次握手

    客户端:我要对你讲话,你能听到吗;
    服务端:我能听到;而且我也要对你讲话,你能听到吗;
    客户端:我也能听到。
    …….
    互相通话

    三、关闭TCP连接,四次挥手

    客户端:我说完了,我要闭嘴了;
    服务端:我收到请求,我要闭耳朵了;
    (客户端收到这个确认,于是安心地闭嘴了。)
    …….
    服务端还没倾诉完自己的故事,于是继续唠唠叨叨向客户端说了半天,直到说完为止
    …….
    服务端:我说完了,我也要闭嘴了;
    客户端:我收到请求,我要闭耳朵了;(事实上,客户端为了保证这个确认包成功送达,等待了两个最大报文生命周期后,才闭上耳朵。)
    (服务端收到这个确认,于是安心地闭嘴了。)
    图解:

     

    展开全文
  • TCP三次握手四次挥手过程 原文链接

    TCP三次握手四次挥手过程

    原文链接

    展开全文
  • HTTP三次握手四次挥手过程HTTP三次握手四次挥手过程基本描述工作流程建立连接-TCP三次握手为什么三次握手断开连接-TCP四次挥手为什么四次挥手 HTTP三次握手四次挥手过程 基本描述 http协议全称:HyperText Transfer...


    )

    HTTP三次握手四次挥手过程(清晰梳理)

    基本描述

    • http协议全称:HyperText Transfer Protocol,超文本传输协议;用于服务传输超文本到本地浏览器的传送协议
    • 应用层协议、C/S模型、无状态
    • 通常承载与TCP协议层上,有时也承载与TLS或SSL协议层上,此时成了https
      在这里插入图片描述

    工作流程

    • 首先客户端和服务端先建立连接(TCP三次握手)

    • 建立连接后,客户端发送请求给服务端,请求格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容

    • 服务器接到请求后返回响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容

    • 客户端收到响应后断开连接(TCP四次挥手)

    建立连接-TCP三次握手

    ACK : 确认序号有效

    SYN:发送一个新的链接
    在这里插入图片描述

    • 第一次握手:客户端向服务端发出连接请求,将标志位SYN置为1,随机产生一个值seq=J;客户端进入SYN_SENT状态,等待服务器端确认
    • 第二次握手:服务端响应客户端,并要求确认,将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K;服务器端进入SYN_RCVD状态
    • 第三次握手:客户端校验(ackJ+1 && ACK1),校验通过将标志位ACK置为1,ack=K+1响应服务端;服务端收到后校验(ackK+1 && ACK1),校验通过连接建立成功;客户端、服务端进入ESTABLISHED状态,完成三次握手

    为什么三次握手

    客户端:C,服务端:S

    第一次:C向S请求,此时C什么都不知道,S知道C发送正常,自己接收正常

    第二次:S向C响应,此时C知道自己和S收/发正常,S知道C发送正常,自己接收正常

    第三次:C向S响应,此时C知道自己和S收/发正常,S知道自己和C收/发正常

    断开连接-TCP四次挥手

    断开连接可以是客户端也可以是服务端发起

    FIN:释放一个链接
    在这里插入图片描述

    • 第一次挥手:客户端向服务端发出断开请求,将标志位FIN置为M;客户端进入FIN_WAIT_1状态
    • 第二次挥手:服务端响应客户端,发送ack=M+1;客户端进入FIN_WAIT_2状态
    • 第三次挥手:服务端向客户端发送请求,将标志位FIN置为N;服务端进入LAST_ACK状态
    • 第四次挥手:客户端响应服务端,发送ack=N+1; 客户端进入TIME_WAIT状态,等待2MSL后没后收到回复证明服务端已关闭连接,此时客户端就关闭连接完成四次挥手

    为什么四次挥手

    客户端:C,服务端:S

    第一次:C向S请求,C不再发送数据了,但是还能接收

    第二次:S向C响应,S确认收到请求,但是还有数据要发送

    第三次:S向C请求,S数据发完了,可以关闭了

    第四次:C向S响应,C确认收到请求,等待超时关闭;S收到响应后立即关闭

    • 2MSL时间可以保证本次连接所有报文失效
    展开全文
  • 描述TCP协议状态机及三次握手四次挥手过程

    5 网络基础知识储备

    5.1 OSI七层模式

    OSI七层模式

    5.2 TCP/IP协议栈

    TCP/IP协议栈

    5.3 描述TCP协议状态机及三次握手四次挥手过程

    5.3.1 TCP 协议状态机
    1. TCP状态转换图

    状态图

      • CLOSED: 初始状态
      • LISTEN: 服务器端的某个SOCKET处于监听状态,可以接收连接了
      • SYN_RCVD: 服务器接收到了SYN报文
      • SYN_SENT: 客户端已发送SYN报文
      • ESTABLISHED:连接已经建立了
      • FIN_WAIT_1:当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到
      • FIN_WAIT_2:上面已经详细解释了这种状态,实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你,稍后再关闭连接
      • TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2个MSL(最大生存时间)值(RFC建议2分钟,Berkeley传统使用30s)后即可回到CLOSED可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态
      • CLOSING: 这种状态比较特殊,实际情况中应该是很少见,属于一种比较罕见的例外状态。正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?其实细想一下,也不难得出结论:那就是如果双方几乎在同时close一个SOCKET的话,那么就出现了双方同时发送FIN报文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接
      • CLOSE_WAIT: 这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以close这个SOCKET,发送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接
      • LAST_ACK: 被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状态了
    5.3.2 三次握手
    1. 建立TCP连接:

    三次握手

    • 客户端发送一个带SYN标志的TCP报文到服务器,这是三次握手过程中的报文1
    • 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯
    • 客户端必须再次回应服务端一个ACK报文,这是报文3。
    5.3.3 四次挥手
    1. 关闭TCP连接
      • TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)
      • 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号
      • 服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)
      • 客户端发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)

    四次挥手

    小结
    • 整体图

    整体图

    1. 为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

    这是因为服务端在LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的

    1. 为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态?

    这是因为虽然双方都同意关闭连接了,而且握手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SEND状态到ESTABLISH状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文

    5.4 loopback网卡功能

    loopback网卡功能

    5.5 描述数据包封装解封装过程

    数据包封装解封装过程

    5.6 端口号的作用及常用的协议端口号有哪些

    端口号的作用及常用的协议端口号

    5.7 IP模块

    IP模块

    5.8 基础路由和交换技术

    基础路由和交换技术

    展开全文
  • 事实上我在阿里面试的时候确实被问到了这个问题,HTTP、HTTPS、TCP/IP、Socket通信、三次握手四次挥手过程?当时虽然思路正确,可惜最终也并不算完全答对 结束后花了一段时间整理了下思路,参考和查阅了一下资料,...
  • 目录三次握手四次挥手 三次握手 过程 一开始,客户端和服务端都处于 CLOSED 状态。先是服务端主动监听某个端口,处于 LISTEN 状态 客户端会随机初始化序号(client_isn),将此序号置于 TCP 首部的「序号」字段中,...
  • HTTP三次握手四次挥手过程

    千次阅读 2018-08-27 14:14:43
    一、HTTP协议三次握手过程 1.1名词解释。   SYN(Synchronous 位码,表示建立联机)   Seq(Sequence number 顺序号码)   ACK(Acknowledgement 确认值)   Ack(Acknowledgement number 确认号码) ...
  • TCP协议三次握手四次挥手过程分析 路由器 » 协议标准 | 阅读(4577) | 评论(0) Aug 11 2009 TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的...
  • TCP三次握手四次挥手 TCP数据包 术语 含义 URG 为1时,紧急指针有效。表示此报文段中有紧急数据要被优先处理 ACK 为1时,确认号有效 PSH 为1时,接收端应用程序应该从TCP缓冲区把数据读走,不用等到...
  • 四次挥手断开连接 通过图来梳理TCP-IP协议相关知识。TCP通信过程包括个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。 上图主要包括部分:建立连接、传输数据...
  • TCP是面向连接的,通信双方在数据传输之前,必须先在双方之间...当输出传输完毕之后,需要通过四次挥手来断开连接,回收资源,在socket编程中,这一过程由客户端或服务端任一方执行close来触发。 所谓三次握手(...
  • TCP头部: 其中 ACK SYN 序号 这个部分在以下会用到,它们的介绍也在下面。 暂时需要的信息有: ACK: TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1 SYN(SYNchronization) : 在...
  • 网上看到过一些有关TCP三次握手四次挥手过程,觉得有必要总结一下了,对于了解TCP的过程还是有帮助的 1.变量含义 SYN表示建立连接, FIN表示关闭连接, ACK表示响应, PSH表示有 DATA数据传输, RST表示连接...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 1、图解三次握手四次挥手
  • TCP报文的头部结构 TCP头部信息出现在TCP报文段中,目的是指定源端端口、目的端端口、管理TCP链接等等。 TCP的头部结构如图所示:...6个标志位中,ACK,RST,SYN,FIN此个最常用,分别表示确认号是否有效,让对方从
  • TCP协议是传输控制协议,是以=一个面向连接,在运用此协议进行数据传输的时候会进行连接工作 ,(三次握手)当传输完毕后,双方都会通知彼此释放连接(四次挥手)。 TCP标志位: SYN (建立联机)  ACK (确认)...
  • 四次挥手过程理解    1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1...
  • 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; SYN:同步序列编号(Synchronize Sequence ...
  • 网络连接状态描述 ...答:虽然按道理,个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,871
精华内容 1,548
关键字:

三次握手四次挥手过程