zoukankan      html  css  js  c++  java
  • 10.TCP连接的建立与终止

     
    1.建立连接协议
    (1)请求端发送一个SYN段指明客户打算连接的服务器的端口,移机初始序号ISN。这个SYN段为报文段1。
    (2)服务器发回包含服务器的初始序号的SYN报文段作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。
    (3)客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认。
    这三个报文段完成连接的建立,这个过程也称为3次握手。
    2.连接终止协议
    终止一个连接需要进行4次握手,这是由TCP的半关闭造成的。
    当客户机完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。当服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。当服务器也想关闭连接时,会向客户机发送一个FIN,客户必须发回一个确认,并将确认序号设置为收到的序号加1。你
    3.最大报文段长度
    最大报文段长度MSS表示TCP传往另一端的最大块数据的长度。当一个连接建立时,双方都要通告各自的MSS。如果没有分段发生,MSS越大,每个报文段传送的数据就越多,相对TCP和IP首部就有着更高的网络利用率。MSS一般为MTU减去IP首部和TCP首部各20字节。对于 一个以太网,MSS可达1460bytes。如果目的地址不是本地地址,MSS默认为536。但是如果中间网络的MTU小于576,则MSS还会更小。
    4.TCP的状态变迁图
    5. 2MSL等待状态(TIME_WAIT状态
    MSL:报文段最大生存时间,它是任何报文段被丢弃前在网络内的最长时间。
    当TCP执行一个主动关闭,并发回最后一个ACK之后,该连接必须在TIME_WAIT状态停留时间为2倍MSL,这样可以让TCP再次发送最后的ACK以防止这个ACK丢失(另一端超时并重发最后的FIN)。
    6. FIN_WAIT_2状态
    这就是著名的半关闭的状态了,客户端关闭了到服务器方向上的连接,还能接受服务器方向发送的数据。如果服务器一直不关闭服务器到客户端的TCP连接,客户端会一直处于FIN_WAIT_2状态,而服务器则一直处于WAIT_CLOSE状态,直到应用层来决定关闭这个状态。
     
    7.RST报文段的作用
    RST报文段能够中途释放一个连接,称为异常释放(当应用程序出现异常时发送RST报文段);RST报文段还能够检测并关闭半打开连接。
    异常终止对于程序的优点:
    (1)丢弃任何待发数据并立即发送复位报文段;
    (2)RST的接收方会区分另一端是异常关闭还是正常关闭。
    收到RST报文段表示另一端已经终止了连接,本机不会产生任何响应,而是直接终止该连接,并通知应用层连接复位。
    8.同时打开
    TCP可以处理同时打开,对于同时打开它仅仅建立一条连接。
    以下是同时打开建立连接的状态变迁图:
    9.TCP服务器设计
    TCP服务器根据客户端的socket区分不同的对话,TCP服务器一般使用相同的端口号。TCP服务器可以限定本地IP地址和远端IP地址。因为TCP服务器要支持并发连接,采用了呼入连接请求队列。伯克利的TCP呼入连接请求队列实现如下:
    (1)正等待连接请求的一端有一个固定长度的连接队列,此队列中的连接已被TCP接收,但没有被应用层接收;
    (2)应用层会指明队列的最大长度(积压值);
    (3)连接请求到达时,TCP采用算法,根据当前连接队列中的连接数确定是否接受这个连接;
    (4)对于新的连接请求。若该TCP监听的端点的连接队列中还有空间,TCP模块将对SYN进行确认并完成连接的建立;
    (5)如果对于新的连接请求,若连接队列没有空间,TCP将不理会收到的SYN,也不发回任何报文段。
     
  • 相关阅读:
    Spring@Profile注解
    day 32 子进程的开启 及其用法
    day 31 udp 协议SOCK_DGRAM
    day 30 客户端获取cmd 命令的步骤
    day 29 socket 理论
    day 29 socket 初级版
    有关 组合 继承
    day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块
    新式类和经典类的区别
    day 28 hasattr getattr serattr delattr 和带__内置__ 类的内置方法
  • 原文地址:https://www.cnblogs.com/zhoudayang/p/5281812.html
Copyright © 2011-2022 走看看