运输层---TCP的连接与释放

一、运输连接三个阶段

  • TCP是面向连接的协议

  • 运输连接有三个阶段:

    1. 连接建立
    2. 数据传送
    3. 连接释放
  • 连接建立过程中要解决以下三个问题

    1. 要使每一方都能够确知对方的存在
    2. 要允许双方协商一些参数(如最大报文长度,最大窗口大小等)
    3. 能够对运输实体资源进行分配
  • 客户服务器方式

    • TCP的连接的建立采用客户服务器方式
    • 主动发起连接建立的应用进程叫做客户(client)
    • 被动等待建立连接的应用进程叫做服务器

二、TCP的连接建立

  • TCP建立连接的过程叫做握手
  • 握手需要在客户和服务器之间交换三个TCP报文段。称之为三报文握手 (发送–>确认–>再确认)
    在这里插入图片描述
  1. 第一步:图片已经给出,其中SYN字段请求建立连接的标志位,这段报文数据字节的序号是x(这个x是随便定的,在释放连接中这个seq序号是不能随便定的),但实际上是没有数据字节存在的,只有一个首部,数据部分是空的。
  2. 第二步:B的TCP收到请求报文段后,如果同意,则发回确认,B在确认报文段中应使用SYN = 1 ,使ACK = 1(标志确认号有效) , 其确认号ack = x+1(确认号是指期望收到的下一个字节序号,这里也说明了前面x个已经收到了),自己这段报文的序号seq = y。数据部分仍然是空。
  3. 第三步:A收到此段报文后向B发送报文,其ACK = 1, 确认号ack=y+1(同样,也可以表明B发的y个字节收到了)。
  4. 连接建立成功: A的TCP通知上层应用进程,连接已经建立。

TCP连接的释放

  • 释放过程比连接过程要复杂
  • 数据传输结束后,通信双方都可以释放连接(客户端或服务端)
  • TCP连接释放过程是四报文握手
  1. A正在向B传送数据,突然就不想再和B继续下去了,准备分手。
  2. A停止向B发送数据,A主动关闭TCP(之前正在传输的数据)
  3. A向B发送数据报文段,请求报文中,FIN = 1(标志着这段报文是请求释放连接的报文) ,seq =u(这个u不是随便定的,因为前面A和B是在传输数据的,传输的数据字节的最后一个序号就是u),等待B的确认。
  4. B向A发送确认报文,ACK =1 ,seq=v,ack = u+1。TCP服务器进程通知高层应用进程(告诉它们A不会再发数据过来了)。 这时A到B这个方向的连接就释放了,TCP连接处于半关闭状态。B若发送数据,A仍要接收
  5. 若B也没有要向A发送数据了,其应用进程就像刚刚A一样发送断开连接请求,重复以上过程。
  • 当A或B发出确认断开连接的确认报文后,不能马上关闭连接,必须等2MSL时间后才能关闭。(MSL----Maximum Segment Lifetime 最长报文寿命)
    1. 为了保证发出去的最后一个确认报文段能够到达另一方。
    2. 为了让本连接期间所有产生的报文段都会从网络中消失(传丢了或者到达了。)
发布了22 篇原创文章 · 获赞 0 · 访问量 134

猜你喜欢

转载自blog.csdn.net/weixin_42649617/article/details/105008168
今日推荐