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,也不发回任何报文段。
 

10.TCP连接的建立与终止的更多相关文章

  1. TCP连接的建立和终止

    TCP的简要要说明 标签(空格分隔): TCP 网络编程 Linux 面试 在此输入正文 一.TCP是什么 TCP全称传输控制协议(Transmission Control Protocol).TCP ...

  2. TCP/IP协议--TCP协议概括和TCP连接的建立和终止

    TCP提供一种面向连接的.可靠的字节流服务.面向连接指,发送和接收方在交换数据前必须建立一个TCP连接.顺便说下,一个TCP连接只有两方,因此广播和多播是不能应用于TCP的.字节流指,两个应用程序通过 ...

  3. 传输层(2)-TCP连接的建立和终止、TIME_WAIT状态

    1.TCP连接的建立和终止 1)三路握手 客户端发送一个SYN(同步)分解,告诉服务器客户将在连接中发送的数据的初始序列号. 服务器发送确认客户的SYN(ACK),同时自己也得发送一个SYN分节,它含 ...

  4. TCP连接的建立与终止

    TCP/IP详解学习笔记(13)-- TCP连接的建立与终止 1.TCP连接的建立            设主机B运行一个服务器进程,它先发出一个被动打开命令,告诉它的TCP要准备接收客户进程的连续请 ...

  5. [TCP/IP]TCP连接的建立和终止

    TCP 是支持全双工通信的传输层协议,为了开发出更好的网络通信应用,清楚了解其中的交互过程是非常必要的. 下面用比较直白的话来描述&理解一下这个过程: TCP 连接建立:三次握手 服务器依次调 ...

  6. TCP连接的建立与终止过程详解

    TCP连接的建立与终止: 1.TCP连接的建立      设主机B运行一个服务器进程,它先发出一个被动打开命令,告诉它的TCP要准备接收客户进程的连续请求,然后服务进程就处于听的状态.不断检测是否有客 ...

  7. 网络编程-TCP连接的建立与终止

    TCP是一个面向连接的协议.无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接. 1.建立连接 请求端(通常称为客户)发送一个 SYN 段指明客户打算连接的服务器的端口,以及初始序号( I ...

  8. TCP/IP详解学习笔记(13)-- TCP连接的建立与终止

    1.TCP连接的建立            设主机B运行一个服务器进程,它先发出一个被动打开命令,告诉它的TCP要准备接收客户进程的连续请求,然后服务进程就处于听的状态.不断检测是否有客户进程发起连续 ...

  9. TCP/IP详解学习笔记(10)-TCP连接的建立与中止

    TCP是一个面向连接的协议,所以在连接双方发送数据之前,都需要首先建立一条连接.这和前面讲到的协议完全不同.前面讲的所有协议都只是发送数据而已,大多数都不关心发送的数据是不是送到,UDP尤其明显,从编 ...

随机推荐

  1. 解读QML之四

    解读QML之四 QML对象属性 每一个QML对象类型都定义了一系列属性.每创建一个该对象类型的实例,该实例的这些属性也自动被创建了.接下来我们讨论几种不同类型的属性. id属性 每一个QML对象类型都 ...

  2. css 内联与块

    内联元素可以理解为不能直接设置宽度和高度元素,比如span,你为他设置宽度和高度没有效果,除非你把它设置成块级元素. 如下面的代码把display:block;属性值去掉的话,宽度和高度都不会起作用了 ...

  3. sql视图

    什么是视图 大家都知道,我们国家现在“神七”上天了.从美国的月球登月开始,人类上天不再是神话.听说,在美国,你只要出几十万美元,您就可以上一次月球进行太空旅行,所以,我们相信:在不久的将来,上天旅行将 ...

  4. do{...}while(0)的妙用(转)

    源:http://www.cnblogs.com/lizhenghn/p/3674430.html 在学习第一门编程语言时,就已经介绍了顺序分支.条件分支.循环分支.比如循环分支有for.while. ...

  5. zf-关于触摸屏子系统(查询机)的页面

    这个页面 一般是 touch/index.jsp 这个要记下来. -- 今天有个任务 是把查询机的UI页面给换掉

  6. zencart_magiczoom

    mod_zencart_magiczoom使用   一.复制相应文件到相应目录. 二.安装sql文件. 三.按照正确命名上传商品图片,一般需要中图跟大图. 四.程序运行时会在images目录下创建ma ...

  7. 一个int类型引发的bug

    一.引言 今天我在项目开发中,遭遇了一个莫名其妙的问题,概括加抽象后形成如下问题:在使用MyBatis的XML语句实现Dao层接口 List<Person> selectBySome(@P ...

  8. 转载--使用image-set来优化在retian屏幕下的背景图片

    mage-set对我来说,我也很陌生,于是借助G爸和度娘海量的搜索image-set,才知道Webkit内核"safari6"和“chrome21”支持CSS4的backgroun ...

  9. JAVA基础---面向对象

    方法的重载Overload: 一个类中可以定义有相同的名字, 参数不同的多个方法. 调用时, 会根据不同的参数选择对应的方法. static: 在数据区, 可以计数,属于类,不属于对象: public ...

  10. web beacon

    网络臭虫又叫 网络信标(Web beacon), 是可以暗藏在任何网页元素或邮件内的1像素大小的透明GIF或PNG图片 可以理解为<img src="http://www.webbea ...