上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
摘要: 我们在介绍TCP头的时候,提到过其中有个RST标志位。当一个TCP报文中这个标志位打开的时候,我们叫做reset包(严格的说应该叫做reset段,但是很多时候段包帧并不加以区分)或者简单称呼为reset、RST。通常reset的产生是由于一个异常包导致,reset一般会导致TCP连接的快速断开。产生reset的几种常见的情形如下向一个未打开的端口发送连接请求应用程序主动终止一个连接... 阅读全文
posted @ 2016-11-07 13:42 lshs 阅读(6286) 评论(3) 推荐(1) 编辑
摘要: 一、TCP选项概述 在前面介绍TCP头的时候,我们说过tcp基本头下面可以带有tcp选项,其中有些选项只能在连接过程中随着SYN包发送,有些可以延后。下表汇总了一些tcp选项其中我标记为红色的部分是常见的TCP选项,我们仅针对这些红色的TCP选项进行介绍(主要是非红色的我也不太了解~~~),另外RFC1323已经被RFC7323取代,这里给出的是TCP选项原始定义的RFC ... 阅读全文
posted @ 2016-11-07 13:41 lshs 阅读(12535) 评论(2) 推荐(3) 编辑
摘要: 经过前面对TCP连接管理的介绍,我们本小节通过TCP连接管理的状态机来总结一下看看TCP连接的状态变化一、TCP状态机整体状态转换图(截取自第二版TCPIP详解)二、TCP连接建立和终止过程中状态迁移总结下面我们总结一下前面介绍过的连接建立方式和终止过程中client端和server端的状态切换1、三次握手client:CLOSED -> SYN_SENT -> ESTABLISH... 阅读全文
posted @ 2016-11-07 13:40 lshs 阅读(2335) 评论(0) 推荐(0) 编辑
摘要: 一、TFO背景 当前web和web-like应用中一般都是在三次握手后开始数据传输,相比于UDP,多了一个RTT的时延,即使当前很多应用使用长连接来处理这种情况,但是仍然由一定比例的短连接,这额外多出的一个RTT仍然对应用的时延有非常大的影响。TFO就是在这种背景下面提出来的。 TFO(TCP fast open)是TCP协议的experimental update,它... 阅读全文
posted @ 2016-11-07 13:39 lshs 阅读(6396) 评论(2) 推荐(0) 编辑
摘要: 一、TCP连接的ISN 之前我们说过初始建立TCP连接的时候的系列号(ISN)是随机选择的,那么这个系列号为什么不采用一个固定的值呢?主要有两方面的原因防止同一个连接的不同实例(different instantiations/incarnations of the same connection)的数据包混淆。同一个连接的不同实例是怎么回事呢?之前我们说过(源IP、源端口号、目的地... 阅读全文
posted @ 2016-11-07 13:35 lshs 阅读(4594) 评论(0) 推荐(0) 编辑
摘要: 在前面部分我们我们分别介绍了三次握手、四次挥手、同时打开和同时关闭,TCP连接还有两种场景分别是半打开(Half-Open)连接和半关闭(Half-Close)连接。TCP是一个全双工(Full-Duplex)协议,因此这里的半连接"半"字就是相对于全双工的"全"来说的。一、半开连接 从协议定义的角度来说,TCP的半开连接是指TCP连接的一端异常崩溃,或者在未通知对端... 阅读全文
posted @ 2016-11-07 13:34 lshs 阅读(7048) 评论(0) 推荐(0) 编辑
摘要: 在前面的内容中我们介绍了TCP连接管理中最常见的三次握手方式和四次挥手的方式。但是有可能A和B两端同时执行主动打开并连接对方或者同时执行主动关闭连接(尽管发生这种情况的可能性比较低低),这个时候的流程就略有不同了。下面我们分别对同时打开(simultaneous open)连接和同时关闭(simultaneous)连接这两种情况分别进行介绍。一、同时打开连接 同时打开... 阅读全文
posted @ 2016-11-07 13:33 lshs 阅读(5531) 评论(15) 推荐(0) 编辑
摘要: 1、socket SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) sys_socket->sock_create->__sock_create(入参有效性校验)->sock_alloc(申请分配新的inode,初始化ino 阅读全文
posted @ 2016-11-07 13:32 lshs 阅读(2902) 评论(0) 推荐(1) 编辑
摘要: 一、SYN报文处理: 公共部分:tcp_v4_rcv->tcp_v4_do_rcv->tcp_v4_cookie_check(无处理动作)->tcp_rcv_state_process->tcp_v4_conn_request[conn_request]->tcp_conn_request(传入两个 阅读全文
posted @ 2016-11-07 13:31 lshs 阅读(3628) 评论(1) 推荐(0) 编辑
摘要: 一、TCP连接管理概述 正如我们在之前所说TCP是一个面向连接的通信协议,因此在进行数据传输前一般需要先建立连接(TFO除外),因此我们首先来介绍TCP的连接管理。 通常一次完整的TCP数据传输一般包含三个阶段,分别是连接建立(setup)、数据传输(established)和连接释放(teardo 阅读全文
posted @ 2016-11-07 13:29 lshs 阅读(3429) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 下一页