TCP 之 TCP首部
TCP首部图
TCP首部说明
源端口,目的端口
用于寻找发送端和接收端应用进程。(源IP,源端口,目的IP,目的端口) 四元组确定唯一一个TCP连接;(IP,端口)也称为一个插口(socket);
序号
标识从TCP发送端向TCP接收端发送的数据字节流,它标识在当前传输报文段中的第一个数据字节;需要是32比特的无符号数,序号达到2^32-1后又冲0开始;
当建立一个新连接时,SYN标志设置为1;序号字段包含由这个主机选择的初始序号ISN(Initial Sequence Number);该主机要发送数据的第一个字节序号为这个ISN+1,因为SYN标志消耗了一个序号;
TCP为应用层提供全双工的服务,这意味着数据在两个方向上独立的进行传输。因此,连接的每一端都必须保持每个方向上的传输数据序号。
确认序号
确认序号包含发送确认的一端期望收到的下一个需要。因此,确认序号应当是上次已成功收到的数据字节序号+1;只有ACK标志为1时确认序号字段才有效;
发送ACK无需任何代价,因为32位的确认序号字段和ACK标志一样,总是TCP首部的一部分,因此,一旦一个TCP连接建立起来,这字段总是被设置的,ACK标志也总是被设置为1;
TCP可以表述为一个没有选择确认或者否认的滑动窗口协议。TCP缺少选择确认是因为TCP首部中的确认序号标识发送方成功接收的的字节,但还不包含确认序号所指的自己。当前还无法对数据流中选定的部分进行确认;如:1-1024已经收到,下一个接收到报文段中序号从2049-3072,此时收端不能确认这个报文段。它所能做的就是发回一个确认序号为1025的ACK;它也无法对一个报文段进行否认;如:如果收到1025-2048字节的报文段,但是校验和错误,TCP接收端所能做的就是发回一个确认序号为1025的ACK;
首部长度
首部长度包含4位,TCP首部选项字段的长度是可变的,首部最大长度为1111*4=60字节;没有选项的情况下,正常的长度是20字节;
标志位
URG–紧急指针有效;
ACK–确认序号有效;
PSH–接收方应该尽快将这个报文段交给应用层;
RST–重建连接;
SYN–同步序号用来发起一个连接
FIN–发送完成发送任务;
窗口大小
TCP的流量控制由连接的每一端通过声明窗口的大小来提供;窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节数;窗口大小是一个16位字段,因而窗口大小最大为65535字节;
校验和
校验和覆盖了整个TCP报文段:TCP首部和TCP数据。这是一个强制字段,一定是由发送端计算和存储,由接收端进行验证;
紧急指针
紧急指针是一个正的偏移量,和序号字段中的值相加标识紧急数据最后一个字节的序号;紧急指针只有在URG标志位设置为1时才有效;TCP紧急指针是发送端向另一端发送紧急数据的一种方式;
选项
最常见的选项字段是最长报文段大小,又称为MSS(Maximum Segment Size);每个连接通常都在通信的第一个报文段中指明这个选项;它指明本端所能接受的最大长度的报文段;
注:本文大部分内容来自于<TCP/IP详解>;
TCP 之 TCP首部的更多相关文章
- TCP报文段首部详解
TCP虽然是面向字节流的,但是tcp传送的数据单元却是报文段,一个报文段分为首部和数据两部分,几乎TCP所有功能都从首部来体现,下面我们来详细的剖析下它的首部. (1):源端口与目标端口:分别写入源端 ...
- TCP/IP笔记——TCP特点、首部格式、滑动窗口
这次总结一下TCP相关的知识. TCP主要特点 面向连接:在通信前必须建立连接(只是逻辑上存在,而不是物理连接) 只能有两个端点:即只能一对一通信(所以通常p2p是用UDP实现的) 提供可靠交付服务: ...
- 动手学习TCP:TCP连接建立与终止
TCP是一个面向连接的协议,任何一方在发送数据之前,都必须先在双方之间建立一条连接.所以,本文就主要看看TCP连接的建立和终止. 在开始介绍TCP连接之前,先来看看TCP数据包的首部,首部里面有很多重 ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
摘要: 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠 ...
- 协议-TCP:TCP
ylbtech-协议-TCP:TCP 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793 ...
- the age of the TCP connection TCP Slow Start
w防止网络过载和拥塞 HTTP The Definitive Guide The performance of TCP data transfer also depends on the age of ...
- 使用app-inspector查看元素,无法连接到手机,提示错误{ Error: Command failed ……forward tcp:9001 tcp:9001错误解决
在学习使用app-inspector查看元素时,碰到一个问题.在cmd窗口执行命令app-inspector --port 5678 -u 85EABNFSU53R --verbose ,连接不到手 ...
- tcp slowstart (TCP 慢启动)
tcp slowstart (TCP 慢启动) 慢启动定义 慢启动,是传输控制协议使用的一种拥塞控制机制.慢启动也叫做指数增长期.慢启动是指每次TCP接收窗口收到确认时都会增长.增加的大小就是已确认段 ...
- ESP8266开发之旅 网络篇⑦ TCP Server & TCP Client
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- TCP服务和首部知识点小结
服务 应用程序会被TCP分割成数据段,而UDP不分割. TCP有超时重传和确认 如果检验和出错将丢弃 IP数据包可能会失序或者重复,所以TCP会处理 滑动窗口来进行流量控制 对字节流的内容不做任何解释 ...
随机推荐
- @Resource与@Autowired注解的区别踩坑者入
一.写本博文的原因 有些童鞋搞不为什么要用@Resource或者@Autowired,咱们一起研究下 @Resource默认按照名称方式进行bean匹配,@Autowired默认按照类型方式进行bea ...
- 第六篇 ajax
加载异步数据 6-1 加载异步数据 XMLHttpRequest--传统的JavaScript方法实现Ajax功能 6-1-a <!DOCTYPE html PUBLIC "-//W3 ...
- 基于Zabbix 3.2.6版本的Discovery
作用:用于发现某IP网段内存活并且满足一定条件的主机,发现后进行加入到zabbix server进行监控. 操作步骤: 创建[自动发现规则] 为新建的自动发现规则创建[Action] 操作步骤图文 ...
- 如何使用python生成gif
如何使用python生成gif? 在我的文件夹里面有很多图片,我们如何将其合成一个gif呢?可以使用PIL模块,这个模块在我的"python图像处理"板块中有详细介绍. # -*- ...
- 网络初级篇之OSPF(一)原理
一.OSPF是什么 Open Shortest Path First, 开放最短路径优先协议,是一种开源的使用最短路径优先(SPF)算法的内部网关协议(IGP).常用于路由器的动态选路. 二.OSPF ...
- CDN和浏览器缓存
1,CDN 旨在解决的最重要的问题是什么,我们称之为网络延迟,通过网络获取资源总是比从本地获取慢,无论服务器是在同一个局域网中还是位于世界的另一个角落,都是如此.这里的速度差异是 IT 行业的一个核心 ...
- Linux文件类型和文件相关命令
文件类型 ll后可以看到文件详情: -:常规文件(内部类型是什么,用file命令) d:directory,目录文件 b:blobk device,块设备文件,支持以“block”为单位进行随机访问 ...
- 火焰图(Flame Graphs)的安装和基本用法
火焰图(Flame Graphs) 一.概述: 火焰图(flame graph)是性能分析的利器,通过它可以快速定位性能瓶颈点. perf 命令(performance 的缩写)是 Linux 系统原 ...
- 模拟客户端向服务器发起请求(从Fiddler抓包到Jmeter接口测试)
一.安装Fiddler 二.配置 在菜单栏Tools->Fiddler Options->Connections,勾选Allow remote computers to connect,默 ...
- dlopen用法
1. 包含头文件 #include<dlfcn.h> 2. 函数定义 void * dlopen(const char* pathName, int mode); pathName 指的 ...