TCP/IP详解 卷1 第十七章 TCP:传输控制协议
17.2 TCP的服务
TCP提供了一种面向连接的、可靠的字节流服务。两个使用TCP的应用在彼此交换数据之前必须先建立一个TCP连接。
TCP通过下列方式来提供可靠性:
1) 应用数据被分割成TCP认为最合适发送的数据块
2) 当TCP发送一个段后,它会启动一个定时器,等待目的端确认。如果不能及时收到确认,将重发这个报文段。
3) TCP收到数据后,它会发送一个确认。这个确认不是立即发送的,通常会推迟几分之一秒
4) TCP将保持它首部和数据的校验和。(这是一个端到端的校验和,如果收到段的检验有错误,TCP将丢弃这个报文也不进行确认,这就会导致超时重传)
5) TCP报文段作为IP数据报来传输,IP数据报的到达可能会失序。tcp段也就有可能会失序。所以TCP将对收到的数据进行重新排序,以正确的顺序将数据传给应用层。
6) IP数据报会重复,TCP的接收端必须丢弃重复的数据
7) TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出
另外、TCP对字节流的内容不作任何解释。对字节流的解释由TCP 连接双发的应用层解释。
17.3 TCP的首部
TCP数据被封装在一个IP数据报中,如下:

下面是TCP首部的数据格式,如果不及任选字段,它通常是20个字节:

源端口和目的端口:用于寻找发端和收端应用进程。(再加上IP首部中源端目的端IP地址就可以唯一确定一个TCP连接)
序号:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
确认序号:包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当是上次已成功收到数据字节序号加1.(只在ACK标志为1 时确认号才有效)
首部长度:首部中32bit字的数目。4位,最多就是15*4 = 60bit。没有任选字段时,正常长度是20字节。
6个标志比特:它们中的多个可以同时被设置为1,这里先简单说明:URG(紧急指针)、ACK(确认序号有效)、PSH(接收方应该尽快将这个报文交给应用层)、RST(重建连接)、SYN(发起连接)、FIN(发送端完成发送任务)。
16位的窗口大小:用于TCP的流量控制,窗口大小为字节数,起始于确认序号字段指明的值。
16位的校验和:校验和覆盖了整个的TCP报文段:TCP首部和TCP数据。这是一个强制性字段,一定是由发端计算,收端验证
16位的紧急指针:只有在URG标志为1时才有效。这是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号
选项:最常见的可选字段是最长报文大小(MSS)。每个连接方通常都在通信的第一个报文段(连接时设置SYN的那个段)中指明这个选项,它表示本端所能接收的最大长度的报文段。
17.4 小结
TCP将用户数据打包成报文段:它发送数据后启动一个定时器;
另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复的数据
tcp提供端到端的流量控制,并计算和验证一个强制性的端到端校验和。
TCP/IP详解 卷1 第十七章 TCP:传输控制协议的更多相关文章
- TCP/IP详解 卷一(第十七章 TCP:传输控制协议)
与UDP协议相比,TCP提供一种面向连接的.可靠的字节流服务. TCP首部 跟UDP一样,TCP数据被封装在一个IP数据报中,下面显示TCP的首部数据格式 每个TCP段都包含源端和目的端的端口号,用于 ...
- TCP/IP详解 卷1 第二十一章 TCP的超时与重传
21.1 引言 可靠性的保证之一就是超时重传 前面两个超时重传的例子 1) ICMP端口不能到达时,TFTP客户使用UDP实现了一个简单的超时和重传机制,假定5s是一个适当是时间间隔,并每隔5s进行 ...
- TCP/IP详解 卷1 第十八章 TCP的建立与终止
第十八章 TCP的建立与终止 tcpdump Tcpdump可以将网络中传送的数据报完截获下来进行分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉 ...
- 《TCP/IP详解卷1:协议》第1章 概述-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第2章 链路层-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第3章 IP:网际协议(1)-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
随机推荐
- ionic2/3注册安卓返回
如果使用了 this.app.getRootNav().push()以及this.navCtrl.push(); 则在注册安卓返回键的时候 registerBackButtonAction() ...
- 14.5 富文本编辑【JavaScript高级程序设计第三版】
富文本编辑,又称为WYSIWYG(What You See Is What You Get,所见即所得).在网页中编辑富文本内容,是人们对Web 应用程序最大的期待之一.虽然也没有规范,但在IE 最早 ...
- Bootstrap按钮式下拉菜单
前面的话 按钮式下拉菜单仅从外观上看,和下拉菜单效果基本上是一样的.不同的是普通的下拉菜单是block元素,而按钮式下拉菜单是inline-block元素.本文将详细介绍Bootstrap按钮式下拉菜 ...
- codeforces166E
Tetrahedron CodeForces - 166E You are given a tetrahedron. Let's mark its vertices with letters A, B ...
- android studio marvin 配置
buildscript { repositories { maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} } } ...
- BZOJ2124 等差子序列(树状数组+哈希)
容易想到一种暴力的做法:枚举中间的位置,设该位置权值为x,如果其两边存在权值关于x对称即合法. 问题是如何快速寻找这个东西是否存在.考虑仅将该位置左边出现的权值标1.那么若在值域上若关于x对称的两权值 ...
- 【BZOJ2003】[HNOI2010]矩阵(搜索)
[BZOJ2003][HNOI2010]矩阵(搜索) 题面 懒得粘了,不难找吧. 题解 看的学长写的题解,也懒得写了 大概是这样的. 不难发现只需要确定第一行和第一列就能确定答案,而确定第一行之后每确 ...
- Selenium之WebDriver元素定位方法
Selenium WebDriver 只是 Python 的一个第三方框架, 和 Djangoweb 开发框架属于一个性质. webdriver 提供了八种元素定位方法,python语言中也有对应的方 ...
- centos6.5 开机自动挂载硬盘
1. 查看硬盘信息 输入命令查询 blkid 查找新添加的硬盘的UUID信息,并且拷贝. 2.编辑系统分区表,加入硬盘自动挂载信息 2.1 打开系统分区表 vim /etc/fstab 进入文件编辑模 ...
- CF 987
毒瘤啊啊啊啊啊 虽然排名还不错,331,但是B我没做出来...... 这是战绩: 可以看到我大发神威势如破竹的A了CDE,但是B把我卡了三次...不然我就能进前300了(还是很水). 逐一分析题目: ...