写在前面:这里是小王成长日志,一名在校大学生,想在学习之余将自己的学习笔记出来,记录自己的成长轨迹,帮助可能需要的人。欢迎关注与留言。 TCP 是因特网运输层的面向连接的可靠的运输协议,与之相对的还有并不可靠的UDP协议,可以看这篇博文进行了解-没搞清运输层的UDP协议? -哎呀, 早来这看就好了啊。 TCP 依赖于许多基本原理,其中包括差错检测、重传、累积确认、定时器以及用于序号和确认号的首部字段 。 TCP的产生历史 在TCP协议中,两个应用进程之间发送数据之前必须先建立连接(互相发送一些报文段初始化与 TCP 连接相关的许多 TCP 状态变量-就是”握手”的阶段) 在TCP连接中,其连接状态完全保留在两个端系统之中.所以对于两个端系统之间的网络元素(路由器和链路层交换机)而言,他们是看不到连接的,他们也不会去维护连接状态。 通过一条TCP连接,数据可以双向流动。这就叫做全双工服务,即可以双向传输数据。 两台端系统之间一旦建立起一条 TCP 连接,两个应用进程之间就可以相互发送数据了 接下来 TCP 就会不时从发送缓存里取出一块数据 取出数据的数量受限于最大报文段长度 (Maximum Segmenl Size, MSS) MSS 通常根据最初确定的由本地发送主机发送的最大链路层帧长度(即所谓的最大传输单元 (Maximum Transmission Unit , MTU)) 来设置。设置该 MSS 要保证一个 TCP 报文段(当封装在一个 IP 数据报中)加上 TCP/IP 首部长度(通常 40 字节)将适合单个链路层帧。以太网和 PPP 链路层协议都具有 1500 字节的 MTU ,因此 MSS 的典型值为 1460 字节 。 当 TCP 发送一个大文件,例如某 Web 页面上的一个图像时, TCP 通常是将该文件划分成长度为 MSS 的若干块(最 32比特后一块除外,它通常小于 MSS) 。 MSS 是指在报文段里应用层数据的最大长度,而不是指包括 TCP 首部的 TCP 报文段的最大长度。 TCP 为每块客户数据配上一个 TCP 首部,从而形成多个 TCP 报文段 (TCP segment) ,这些报文段被下传给网络层 图例 TCP报文段由首部字段和一个数据字段组成 结构图例 源端口号 目的端口号 这两个端口号都是用于多路分解和多路复用的,即报文段准确送达指定套接字,具体可以看我之前的博文-一文带你看懂多路复用与多路分解。 用于检测在传输过程中报文段中的数据是否发生比特错误,具体可看我之前的博文-没搞清运输层的UDP协议? -哎呀, 早来这看就好了啊,在这篇博文的第四个副标题下提到了关于检验和的出现原因以及计算方式。 32 比特的序号字段 (sequence number field) 序号依赖于传输的字节流,而非传送的报文段 序号受MMS(最大报文段长度)的限制,例如现在有一个50 000字节的文件带传送,MMS为1000字节,则TCP会将其分为50个报文段,其中第一个报文段假设初始序号为0(但不一定是0,是随机选择的一个数以防止跟其他程序的报文段序号重复),则第二个报文段序号为1000(0+MMS * 1),第三个报文段序号为2000 序号的选择通常在确定连接时由双方确定,均可随机选择 图例 32 比特的确认号字段( acknowledgment number field) 由于TCP的全双工特性,两个端系统之间互相都会发送数据(报文段) 假设主机 A 填充进报文段的确认号为N 16 比特的接收窗口字段 (receive window field) 4 比特的首部长度字段 (header length field) 可选与变长的选项字段 ( options field) 用于发送方与接收方协商最大报文段长度 (MSS) 时 或在高速网络环境下用作窗口调节因子时使用 。 6 比特的标志字段 (fLag field) Telnet简介 图解 第一个报文段 序号为42 确认号为79 数据字段为字符C 第二个报文段 序号为79 确认号为43 1.已经收到序号为42及之前(在这里没有之前)的报文段(字节) 数据字段为字符C 第三个报文段 序号为43 确认号为80 往返时间的估计 RTT(Round-Trip Time),表示为SampleRTT,在TCP协议中只会被在某个时刻测量一次,而非对所有报文段进行测量,且对于重传的报文段绝不做测量 由于路由器和端系统的变化,我们测量的SampleRTT明显都会发生波动,是非典型的,我们要对SampleRTT取平均值 每当获得一个新的SampleRTT,就采用如下公式更新EstimatedRTT EstÌmatedRTT = (1 -α) . EstimatedRTT +α. SampleRTT 可见 EstimatedRTT 的新值是由以前的 EstimatedRTT 值与 SampleRTT 新值加权组合而成的 。 在[RFC 6298]中给出的 α 参考值是α=0.125 (即 1/8) 往返偏差的计算 设置和管理重传超时间隔 我们先讨论一个高度简化版本-其只用超时恢复报文段的缺失。 1.1 首先我们看看3 个与发送和重传有关的主要事件 事件1:从上层应用程序接收数据 事件2:定时器超时 定时超时重传则相应报文段 然后重启定时器 事件3:收到 ACK 情况1:收到的序号等于sendbase 累积确认 若有还未确认的报文段,则重启定时器 情况2:收到的序号大于sendbase 累计确认 若有还未确认的报文段,则重启定时器 1.2 但是这也可能产生一些有趣的情况,考虑下列场景: 接收方发送的确认报文在超时间隔之后才到达,发送方由于超时未接收到确认报文导致重传 接收方发送的确认报文丢失,发送方由于超时未接收到确认报文导致重传 1.3 超时间隔加倍 现在我们来进行一个更全面的描述-超时机制加上冗余确认技术 对于超时重传,存在的问题可能是超时周期过长,会增加端到端的时延 因此采用发送冗余ACK的技术 接收方会遇到的四种情况 期望序号N的报文按序达到 – ACK延迟最多500ms,等待下一个报文段的是否在时间内到达,没到达则发送对于N的ACK 具有所期望序号的按序报文段到达,另一个按序报文段等待ACK传输 – 对应第一种情况,直接发送ACK,以确认两个按序报文段 比期望序号大的失序报文段到达,检测出间隔 – 立即发送冗余ACK 能部分或完全填充接收数据间隔的报文段到达 – 立即发送最大确认ACK TCP是选择回退N步还是选择重传’?(若还对回退N步以及选择重传比较模糊可以看我之前的博文-一文带你看流水线协议,回退N步以及选择重传) 想想TCP是GBN还是SR? TCP 发送方仅需维持已发送过但未被确认的字节的最小序号( SendBase) 和下一个要发送的字节的序号( NextSeqNum) 。 在这种意义下, TCP 看起来更像一个 GBN 风格的协议。 但是TCP又与GBN有一些区别 对 TCP 提出的一种修改意见是所谓的选择确认 (selective acknowledgment) [RFC 2018J ,它允许 TCP 接收方有选择地确认失序报文段,而不是累积地确认最后一个正确接收的有序报文段 。 当将该机制与选择重传机制结合起来使用时(即跳过重传那些已被接收方选择性地确认过的报文段), TCP 看起来就很像我们通常的 SR 协议 。 因此, TCP 的差错恢复机制也许最好被分类为 GBN 协议与 SR 协议的混合体 。 TCP 通过让发送方维护一个称为接收窗口 (receive window) 的变量来提供流量控制,即接收窗口用于给发送方一个指示一一该接收方还有多少可用的缓存空间 举例实现 接收窗口用于给发送方一个指示一一该接收方还有多少可用的缓存空间 主机 B 接收缓存为 RcvBuffer 定义变量 LastByteRead LastByteRcvd ” LasLByteRcvd – LastByteRead ~ RcvBuffer “明显必须成立 接收窗口用 rwnd 表示 接收窗口rwnd 必须满足 图例 思考一个问题 第一步 第二步 第三步 图例 三次握手的原因 SYN洪泛攻击 SYN洪泛攻击是攻击方大量发送SYN报文而不回复SYNACK的ACK报文,使服务器为这些SYN分配资源建立大量半连接. 应对手段 现有的一种有效的防御系统:SYN cookie 正常的过程, 半连接队列未满 SYN foold攻击, 半连接队列满 都看到这里了,各位哥哥姐姐叔叔阿姨给小王点个赞 关个注 留个言吧,和小王一起成长吧,你们的关注是对我最大的支持。 如果以上内容有任何不准确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。
0. 导入-TCP概述
1. TCP连接的建立与数据传输
TCP连接建立流程
建立TCP连接后
2. TCP报文段结构
首部字段
Telnet: 序号和确认号的一个学习案例
3. 往返时间的估计与超时
4. 可靠数据传输
5. 流量控制
流量控制服务的来源
什么是流量控制服务
流量控制服务的实现
6. TCP连接管理
TCP连接的建立-三次握手
TCP连接的拆除-四次挥手
7.运输层相关博文
有事没事进来看看吧 : 小王的博客目录索引
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算