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. wrong requestcode when using startActivityForResult

    You are calling startActivityForResult() from your Fragment. When you do this, the requestCode is ch ...

  2. mysql select语句解析

    select语句用于从一个或多个数据表选出特定行.特定列的交集 最简单的select语句的语法格式如下: select column1,column2 ........      (列) from 数 ...

  3. strtr对用户输入的敏感词汇进行过滤

    /** * 过滤用户输入的基本数据,防止script攻击 * * @access public * @return string */ function compile_str($str) { $ar ...

  4. (旧)子数涵数·DW——图文混排页面

    一.首先,打开Dreamweaver,新建一个的HTML项目. 二.在设计区里,写一些文字,随便写一点(也可以在代码区中的<body>和</body>之间写). 三.插入一张图 ...

  5. 常见的几种RuntimeException

    一般面试中java Exception(runtimeException )是必会被问到的问题 常见的异常列出四五种,是基本要求.更多的....需要注意积累了   常见的几种如下:   NullPoi ...

  6. java微信开发

    所谓的微信开发就是在微信开发模式之下,对微信进行公众号和企业号的扩展开发.     如果要让你的微信公众号有更多的功能,比如菜单支持,自动的信息服务,查询,消息推送等,就必须开启微信的开发模式.进入微 ...

  7. Q:解决每天第一次打开MSCRM系统展示慢的问题

    问题:第天第一次打开系统时,需要加载很长时间,基本为1分多钟,而第二次打开只需5秒. 解决方案:利用IIS中的Session. 一.打开IIS,选择打开服务器功能中“Session State”. 二 ...

  8. vsphere vcenter server下安装ubuntu的vmwaretools

    0.参考文献 百度经验:这里面是以redhat桌面版为实例进行介绍的,我的环境是ubuntu-server,虽然不一样,也可以参考 http://jingyan.baidu.com/article/2 ...

  9. android 打包错误

    打包时报如下错误: Export aborted because fatal lint errors were found. These are listed in the Lint View. Ei ...

  10. 递归练习(C语言)

    本文地址:http://www.cnblogs.com/archimedes/p/recursive-practice.html,转载请注明源地址. 1.炮弹一样的球状物体,能够堆积成一个金字塔,在顶 ...