《TCP/IP详解 卷一》读书笔记-----TCP连接建立
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连接建立的更多相关文章
- 《TCP/IP详解》读书笔记
本书以UNIX为背景,紧贴实际介绍了数据链层.网络层.运输层 一.整体概念 1.各层协议的关系,只讨论四层 各层常见的协议: 网络层协议:IP协议.ICMP协议.ARP协议.RARP协议. ...
- TCP/IP详解 卷一学习笔记(转载)
https://blog.csdn.net/cpcpcp123/article/details/51259498
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- 『TCP/IP详解——卷一:协议』读书笔记——01
从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...
- 【TCP/IP详解 卷一:协议】第二章:链路层
2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...
- 『TCP/IP详解——卷一:协议』读书笔记——02
2013-08-16 20:07:11 1.3 TCP/IP的分层 这是一个很好的图,要多看!!图上有些细节会在今后的笔记中提到,看不懂不必深究. IP是网络层上的主要协议,同时被TCP和UDP(这两 ...
- 『TCP/IP详解——卷一:协议』读书笔记——18
2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...
- 『TCP/IP详解——卷一:协议』读书笔记——15
2013-08-25 13:39:40 第6章 ICMP:Internet控制报文协议 6.1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错报文以及其他需要注意的信息.ICMP报文同通常 ...
- 『TCP/IP详解——卷一:协议』读书笔记——14
2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...
- 『TCP/IP详解——卷一:协议』读书笔记——13
2013-08-24 16:03:39 4.6 ARP代理 ARP代理(Proxy ARP):如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求.这样可 ...
随机推荐
- MyBatis中的特殊符号[20160713]
今天中午回到工位已经是12:20多了,没有时间睡觉了,本想着还能提前开始,结果看了点新闻之后,又是12:40了,所以新闻坚决不能看,执行力. 今天主要记录一下MyBatis中的特殊符号的问题,这个问题 ...
- Html 网页布局(一)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- Python正则表达式模块(re模块)
Python是我接触到的第一门编程语言,虽然它足够简单,但是对于当时刚刚接触编程语言的我来说还是有些难度的,于是只是了解了一些Python的基本语法,稍微深入一点的地方都没怎么了解.不过,到现在为止, ...
- PHP KMP算法实现
function getNext( $str ){ $ret = array(0=>0); for( $j =1; $j < strlen($str); $j++ ){ $_s = sub ...
- xmapp的安装
搭建网站常识性的你首先得搭建一个服务器. 首先APACHE是世界使用排名第一的WEB服务器软件,但是安装APACHE WEB服务器并不容易.如果你想添加MYSQL.PHP和PERL,那就更难了.所以可 ...
- ASP.NET MVC 5 学习教程:快速入门
起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Se ...
- Android从零开始——Android开发环境的安装
Android开发环境的安装 1 IDE Android可以使用开发的IDE有Eclipse 或者 Android Studio.Android Studio还处于v 0.1.x版本,是early a ...
- mustache模板渲染的基本原理
mustache.js是一个模板引擎,为开发节省了大量的“人力”,对于初学者,我是从这篇 和这篇 博客接触的,算是对mustache有了初步认识,不得不承认自己还是菜鸟阶段还有太多东西要学,慢慢熟悉. ...
- SparseArray<E>详解
SparseArray<E> 是官方推荐的用来替代 HashMap<Integer, E> 的一个工具类,相比来说有着更好的性能(其核心是折半查找函数(binarySearch ...
- batch_size 和 fetch_size作用
hibernate抓取策略,,batch-szie在<class>上的应用 batch-size属性,可以批量加载实体类, hbm.xml classes.hbm.xml <?xml ...