TCP/IP 详解笔记
最早的 TCP 协议文档是 RFC793。
TCP 提供一种面向连接的、可靠的字节流服务。
面向连接容易理解,那么什么是字节流服务呢?
答:两个应用程序通过 TCP 连接交换 8 bit 字节构成的字节流。TCP 不在字节流中插入记录标识符。我们将这成为字节流服务(byte stream service)。另外,TCP 对字节流的内容不作任何解释。TCP 不知道传输的数据字节流是二进制数据,还是 ASCII 字符、EDCDIC 字符或者其他类型数据。对字节流的解释由 TCP 连接双方的应用层解释。这种对字节流的处理方式与 Unix 操作系统对文件的处理方式很相似。Unix 内核对一个应用读或写的内容不作任何解释,而是交给应用程序处理。对 Unix 的内核来说,它无法区分一个二进制文件与一个文本文件。
TCP 通过下列方式来提供可靠性:
- 应用数据被分割成 TCP 认为最适合发送的数据块(UDP 协议中,应用程序产生的数据报长度将保持不变)。由 TCP 传递给 IP 的信息单位称为报文段或段(segment)。
- 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。这也就是所谓的超时及重传策略。
- 当 TCP 收到发自 TCP 连接另一端的数据时,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
- TCP 将保持它首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化。如果收到段的校验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段,以便发端收取确认响应时超时并重发。
- 因为 IP 数据报的到达可能会失序,因此 TCP 报文段的到达也可能会失序。如有必要,TCP 将对收到的数据进行重新排序,以正确的顺序交给应用层。
- IP 数据报也可能会发送重复,所以 TCP 的接收端必须丢弃重复的数据。
- TCP 还能提供流量控制。TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能容纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
TCP 首部
如果不计任选字段,TCP 首部通常是 20 个字节。
- 序号用来标识从 TCP 发端向 TCP 收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则 TCP 用序号对每个字节进行计数。序号是 32 bit 的无符号数,序号到达 2^32 -1 后又从 0 开始。
- 当建立一个新连接时,SYN 标志变 1。序号字段包含由这个主机选择的该连接的初始序号 ISN(Initial Sequence Number)。该主机要发送数据的第一个字节序号为这个 ISN 加 1,因为 SYN 标志消耗了一个序号(FIN 标志也要占用一个序号)。
- 既然每个传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。只有 ACK 标志为 1 时确认序号字段才有效。发送 ACK 无需任何代价,因为 32 bit 的确认序号字段和 ACK 标志一样,总是 TCP 首部的一部分。因此,我们看到一旦一个连接建立起来,这个字段总是被设置,ACK 标志也总是被设置为 1。TCP 为应用层提供全双工服务。这意味着数据能在两个方向上独立地进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号。
- TCP 可以表述为一个没有选择确认或否认的滑动窗口协议(滑动窗口协议用于数据传输)。我们说 TCP 缺少选择确认是因为 TCP 首部中的确认序号表示发方已成功收到字节,但还不包含确认序号所指的字节。当前还无法对数据流中选定的部分进行确认。例如,如果 1 ~ 1024 字节已经成功收到,下一报文段中包含序号从 2049 ~ 3072 的字节,收端并不能确认这个新的报文段。它所能做的就是发回一个确认序号为 1025 的 ACK。它也无法对一个报文段进行否认。例如,如果收到包含 1025 ~ 2048 字节的报文段,但它的校验和错,TCP 接收端所能做的就是发回一个确认序号为 1025 的 ACK。而重复的确认可以帮助发端确定分组已经丢失。
- 首部长度给出首部中 32 bit 字的数据。需要这个值是因为任选字段的长度是可变的。这个字段占 4 bit,因此 TCP 最多有 60 字节的首部。然而,没有任选字段,正常的长度是 20 字节。
其他首部字段
| 字段名 | 字段作用 |
| URG | 紧急指针(urgent pointer)有效 |
| ACK | 确认序号有效 |
| PSH | 接收方应该尽快将这个报文段交给应用层 |
| RST | 重建连接 |
| SYN | 同步序号用来发起一个连接 |
| FIN | 发端完成发送任务 |- TCP 的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个 16 bit 字段,因而窗口大小最大为 65535 字节。后面还有新的窗口刻度选项,它允许这个值按比例变化以提供更大的窗口。
- 校验和覆盖了整个 TCP 报文段:TCP 首部和 TCP 数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。TCP 校验和的计算和 UDP 校验和的计算相似。
- 只有 URG 标志置为 1 时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。
- 最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size)。每个连接方通常都在通信的第一个报文段(为建立连接而设置 SYN 标志的那个段)中指明这个选项。它指明本端所能接收的最大长度的报文段。
从上图中可以看出:TCP 报文段的数据部分是可选的。所以我们可以从建立连接到连接终止都使用没有数据的报文段。
转载于:https://www.cnblogs.com/craftsman-gao/p/6715056.html
TCP/IP 详解笔记相关推荐
- TCP/IP详解笔记----第一章:概述
第一章 概述 这一章主要介绍了TCP/IP的概貌.包括分层.网络地址.客户-服务器模型.常见知名应用层服务端口号等等.需要重点掌握和了解的是以下知识点. 1.TCP/IP的重要作用: 很多不同厂商生产 ...
- TCP/IP详解 笔记八
UDP协议 UDP是传输层协议,提供无连接不可靠的数据传输,其优点失效率高,确定确定是无序不可靠. 报文格式 UDP头部 TCP和UDP的端口号是独立的 UDP长度是指UDP数据报的总长度 UDP的校 ...
- TCP/IP详解 笔记十三
TCP协议(一) 概述 特点 1, 面向连接可靠的字节流服务 2, 只有两方通信,不能用于广播或多播 3, 应用数据被TCP分隔为最合适发送的数据段,传给IP协议栈 4, 发送端并启动定时器, ...
- TCP/IP详解 笔记九
广播和多播 多播和广播只能用于UDP包,TCP明确在两个进程间建立连接. 多播:帧只传送给属于多播组的多个接口 主机对帧的过滤过程: 通常网卡只接收那些目的地址为本物理接口地址或广播地址的帧:设置为混 ...
- TCP/IP详解 笔记十一
域名服务系统(DNS) DNS:名字到IP转换:电子邮件选路信息:分布式数据库 解析器:是通过gethostbyname(3)和gethostbyaddr(3)来实现的 最常用的名字服务器是BIND ...
- TCP/IP详解学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...
- 《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- TCP/IP详解--学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...
- TCP/IP详解学习笔记-基本概念
为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...
最新文章
- side menu待研究
- 数字孪生技术,让酷炫的智慧城市不再遥不可及
- java+mysql中文乱码问题
- 大话Django之一:安装与启动
- mysql 导出中文乱码_sqoop导出到mysql中文乱码问题总结、utf8、gbk
- nagios一键安装脚本
- hdu 2570 迷障(贪心)
- 轻量NuGet服务—BaGet
- 【详细说明】nginx反向代理wss websocket
- 如何用VMware搭建HA和DRS环境(第一篇;序)
- 3复数与复变函数(三)
- SQL Server数据同步的研究(单向/双向)
- 聚类算法 optics
- 微信小程序模版合集下载,160个微信小程序源码.zip + 35个行业-微信小程序源码.zip
- SCCM推送升级Win10
- 生命礼赞,带动世界第三次文化复兴伊比利亚双雄篇
- “绿多多”绿色资产资讯:良设板+“空间优造”亮相雄安 绿色生态进击!
- W10摄像头0xA00F4289和0xA00F4244等错误解决
- canvans——合并图片
- Jzoj5450【NOIP2017提高A组冲刺11.4】Neutral
热门文章
- My interested stuff(2008-07-18)
- 算法设计 分治, 归并排序, 快速排序
- k3服务器端的虚拟,k3服务器 客户端配置
- java 档案管理系统论文_基于JAVA学生档案管理系统论文.doc
- 用python做逻辑回归_python实现逻辑回归
- php将简单的数据从数据库,php将session保存到数据库的简单示例
- Postman系列之Tests断言
- 9 | Spatial-based GNN/convolution模型之GIN
- 今日恐慌与贪婪指数为23 恐慌程度有所缓解
- Sushiswap团队开发者:Sushi在Q1实现400亿美元的交易量,xSUSHI持有者获得2000万美元费用