1、在每个TCP报文段中,头部的flag字段里的SYN,FIN,RST,PSH可以多个有效,并没有限定为必须只有一个

2、TCP连接建立过程:

1)客户端发送一个SYN报文段,其中包含了客户端要传送的初始字节序列J

2)服务器端收到上述报文段,并且返回一个报文段,其中包含了服务器端的SYN序号K,以及对客户端SYN序号的响应信号ACK,J+1,其实ACK确认序列号指的是服务器端希望从客户端得到的下一个字节流的序号,由于SYN消耗了一个序号,因此返回的ACK确认序号为J+1

3)同样,接收到从服务器段发送来的报文段后,客户端同样返回一个ACK确认序号K+1,由此,三次握手结束,TCP连接建立(需要注意的是,两个初始同步序号SYN都是随机的,这是为了避免之前连接中在网络中发生延时的报文段,对当前的连接造成的混乱)

3、TCP连接关闭:因为TCP是一个全双工的传输过程,两个方向的传输是各自独立的,因此需要各自关闭连接。当一方需要关闭连接时,只需要向对方发送一个FIN报文段,此时接收方就不能接收来自对方的数据了,但是仍然可以向对方发送数据。这就是所谓的half-close。当双方都向对方发送FIN,并都收到对方的ACK之后,整个TCP连接结束。这里需要注意的是,FIN同SYN一样也要消耗一个序列号,同时两个方向的数据传输的关闭是独立的,如果一方关闭了连接,其实另一方是感觉不到的!

4、MSS(Maximum Segment Size):一个TCP报文段中能传送的最大的数据部分的长度。一般在建立连接时,连接的双发都会发送各自期望的MSS。通常MSS越大越好,因为这样一次性传输的数据就越多。但是前提不能让IP数据报产生分片,所以最大的MSS其实等于(PATH MTU-40)其中40是20个字节的IP数据报头部和20字节的TCP头部

5、MSL(Maximum Segment Lifetime):一个TCP报文段在网络中能够存在的最长的时间。在TCP连接关闭过程中,发出最后一个ACK的一方要等到2倍的MSL之后才能真正结束这次连接(也就是说在这期间不能去建立新的连接),目的是为了防止对方没有收到ACK而重发了一个FIN。

6、Reset Segment:TCP会返回一个Reset报文段,当收到报文段对应的目的端口并没有进程在监听时。Reset报文段的RST置位且同步序号为0。通常由FIN报文段发起的关闭连接称为orderly release,因为在发出FIN之前,缓存中的数据都被发出了,并没有数据丢失。相反,RESET引起的连接关闭被称为abortive release,因为缓存中的数据直接被丢弃了,并且立即发送REST报文段。

7、Simultaneous Open:指的是当两台主机同时给对方发送SYN数据报建立连接,比如在同一时刻主机A在7777端口向主机B的8888端口发起了一个连接,主机B在8888端口也向主机A的7777发起了连接。这时其实只有建立起一条连接,只要一端收到了SYN和ACK,那么它就进入了连接状态。而且两端互为client和server。当然有Simultaneous Open 自然有Simultaneous Close ,过程其实是类似的,具体如下图所示:

8、TCP服务器中通常有一个称为backlog的队列用于缓存到达的连接请求,如果队列中有空闲空间,那么TCP就会与其建立连接,并且在server空闲的时候将连接交给它(而在这之前server是不知道这个连接的存在的),否则直接将请求忽略(可以让客户端重发连接请求,也许那时候队列就有空闲了)。

《TCP/IP详解 卷一》读书笔记-----TCP连接建立的更多相关文章

  1. 《TCP/IP详解》读书笔记

    本书以UNIX为背景,紧贴实际介绍了数据链层.网络层.运输层   一.整体概念   1.各层协议的关系,只讨论四层 各层常见的协议:   网络层协议:IP协议.ICMP协议.ARP协议.RARP协议. ...

  2. TCP/IP详解 卷一学习笔记(转载)

    https://blog.csdn.net/cpcpcp123/article/details/51259498

  3. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  4. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  5. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——02

    2013-08-16 20:07:11 1.3 TCP/IP的分层 这是一个很好的图,要多看!!图上有些细节会在今后的笔记中提到,看不懂不必深究. IP是网络层上的主要协议,同时被TCP和UDP(这两 ...

  7. 『TCP/IP详解——卷一:协议』读书笔记——18

    2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——15

    2013-08-25 13:39:40 第6章 ICMP:Internet控制报文协议 6.1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错报文以及其他需要注意的信息.ICMP报文同通常 ...

  9. 『TCP/IP详解——卷一:协议』读书笔记——14

    2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...

  10. 『TCP/IP详解——卷一:协议』读书笔记——13

    2013-08-24 16:03:39 4.6 ARP代理 ARP代理(Proxy ARP):如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求.这样可 ...

随机推荐

  1. Free Slideshow, Gallery And Lightboxes Scripts

    http://bootstraphelpers.codeplex.com/SourceControl/list/changesets https://github.com/gordon-matt/Bo ...

  2. ECMall如何支持SSL连接邮件服务器的配置

    首先,主要是ecmall使用的phpmailer版本太低,不支持加密连接. 然后,得对相应代码做一定调整. 1. 覆盖phpmailer 请从附件进行下载: http://files.cnblogs. ...

  3. SpringMvc+Mybatis 框架搭建

    本文承接上一篇[idea使用maven搭建springmvc] 开篇:在main/resources下新建dbconfig.properties.spring.xml.spring-mybatis.x ...

  4. Scala on Visual Studio Code

    Download and install Scala Download a scala installation package from here. Then install it. Linux s ...

  5. SSM框架整合总结

    关于ssm整合的相关总结: 1.持久层--->mybatis:通过Spring 来管理持久层的 Mapper (相当于 dao 接口),来完成对数据库的操作. 首先我们回顾一下,在单独使用myb ...

  6. Delphi又要换东家了

    前几天听到这个消息,搞个FMX出来,64位还没搞清楚,又开始折腾了!http://www.deltics.co.nz/blog/posts/2371 No Seriously – Let’s Buy ...

  7. jdk1.8 J.U.C之FutureTask实现机制分析

    我画了一张关于FutureTask的类图,主要包括FutureTask的几个重要的函数和字段,还有它和父类的关系. 根据上面图我们可以清晰的看出FutureTask的继承关系.FutureTask继承 ...

  8. 探索HashMap实现原理及其在jdk8数据结构的改进

    因为网上已经太多的关于HashMap的相关文章了,为了避免大量重复,又由于网上关于java8的HashMap的相关文章比较少,至少我没有找到比较详细的.所以才有了本文. 本文主要的内容: 1.Hash ...

  9. 使用PHP搭建书虫网站

    年前开始了一个新项目,书虫项目的启动,项目组里面我是负责搭建网站的.以前听说过PHP的大名,就是没怎么看过,只能从一无所知开始了. 来自PHP手册的介绍:PHP, 即“PHP: Hypertext P ...

  10. play framework学习笔记之 模板引擎

    模板语法 ${client.name} ${client?.name} 不能确定client是否存在的时候? #{extends /} #{doLayout /}#{get} #{set} 比如 #{ ...