from:https://blog.csdn.net/mary19920410/article/details/58030147

TCP报文是TCP层传输的数据单元,也叫报文段。

1、端口号:用来标识同一台计算机的不同的应用进程。

1)源端口:源端口和IP地址的作用是标识报文的返回地址。

2)目的端口:端口指明接收方计算机上的应用程序接口。

TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。

2、序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。

3、数据偏移/首部长度:4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。

4、保留:为将来定义新的用途保留,现在一般置0。

5、控制位:URG  ACK  PSH  RST  SYN  FIN,共6个,每一个标志位表示一个控制功能。

1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

4)RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

5)SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。

6)FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

6、窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小时一个16bit字段,因而窗口大小最大为65535。

7、校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。

8、紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

9、选项和填充:最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。

10、数据部分: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

参考文献:

http://blog.chinaunix.net/uid-26366978-id-3282793.html

http://blog.csdn.net/ningxuezhu/article/details/39892091/

http://blog.csdn.net/a19881029/article/details/29557837

http://www.cnblogs.com/xinyuyuanm/archive/2013/04/17/3026279.html

http://www.360doc.com/content/12/1218/10/3405077_254718387.shtml

from:https://www.cnblogs.com/Chilam007/p/6973990.html

结合抓包数据分析TCP三次握手过程

  1、首先要清楚TCP三次握手过程,如图5所示:

图5(TCP三次握手过程)

百度百科解释TCP三次握手过程如下:

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN SENT状态,等待服务器确认;SYN:即是同步序列编号(Synchronize Sequence Numbers);

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
2、要清楚TCP包中的具体内容如图6所示:(TCP包的具体内容图来源于博客:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html)

图6(TCP包的具体内容)

  3、下面用实例讲下wireshark中的tcp三次握手过程:

  1)打开wireshark后,在浏览器输入访问地址:http://www.cnblogs.com/Chilam007/,wireshark自动捕获数据包,然后过滤自己需要分析的数据,这里是过滤与主机通信的记录,

过滤规则为:ip.addr == 116.211.169.93  ,过滤后的数据如图7所示

图7(过滤后的数据包显示,注:这里不知道为什么数据包是重复的)

  • 574帧是客户端向服务器发送TCP请求建立连接。标识为SYN。

  • 619帧是服务器得到请求后向客户端回应确认包的过程。标识为SYN,ACK。
  • 620帧是客户端回应服务器发送确认包的过程,将于服务器建立连接。标识为ACK。

  • 663帧是客户端向服务器发送HTTP请求内容的过程。标识为GET。

  • 667帧是服务器响应客户端请求的过程,收到请求。标识为ACK。

  • 674帧是服务器向客户端回应内容的过程。

  2)TCP三次握手分析:

 第一次握手数据包,客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接,如图8所示

图8(第一次握手)

 第二次握手的数据包,服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1,如图9所示

图9(第二次握手)

 第三次握手的数据包,客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1,如图10所示

图10(第三次握手)

以上就是 wireshark中的tcp三次握手过程。

转载于:https://www.cnblogs.com/bonelee/p/9629875.html

TCP报文格式和三次握手——三次握手三个tcp包(header+data),此外,TCP 报文段中的数据部分是可选的,在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。...相关推荐

  1. 汇编语言 将a段和b段中的数据依次相加,结果存放在c段中

    题目要求 将a段和b段中的数据依次相加,结果存放在c段中 思路 先将asg的数据放进csg中 把bsg的数据与csg中的数据相加,存到csg中 注意 db定义字节类型变量,一个字节数据占1个字节单元, ...

  2. 16位汇编 在代码段中使用数据

    在代码段中使用数据,  计算0123+0456+0789+0abc+0def+fed+cba+0987 assume cs:code code segmentdw 0123h,0456h,0789h, ...

  3. 汇编语言:实验10 根据材料编程—3.数值显示,编程,将data段中的数据以十进制形式显示出来

    问题描述 编程,将data段中的数据以十进制的形式显示出来. data segmentdw 123,12666,1,8,3,38 data ends 实验效果 实验要求 子程序描述 名称:dtoc 功 ...

  4. 汇编语言:编写code段中代码,将a段和b段中的数据依次相加,将结果放到c段

    题目介绍 程序如下,编写code段中代码,将a段和b段中的数据依次相加,将结果放到c段. assume cs:code,ds:a,ds:b,ds:ca segmentdb 1,2,3,4,5,6,7, ...

  5. 网络-IP协议详解(报文格式、分类、NAT、子网、CIDR、抓包分析)

    目录 简介 报文格式 IPv4地址 分类 网络地址转换NAT 子网划分与子网掩码 CIDR 实战 参考 简介 IP(网际互连协议,Internet Protocol)是TCP/IP协议族中最为核心的协 ...

  6. 汇编语言:程序如下,编写code段中的代码,将a段和b段中的数据一次相加,结果放到c段中

    assume cs:code,ds:a,ds:b,ds:codea segmentdb 1,2,3,4,5,6,7,8a endsb segmentdb 1,2,3,4,5,6,7,8b endsc ...

  7. UDP/TCP报文格式

    1.UDP 报文格式 UDP 报文中每个字段的含义如下: 源端口:这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口.接收端的应用程序利用这个字段的值作为发 ...

  8. 网络基础知识(TCP/UDP报文格式)四

    1.TCP报文格式 源端口号: 占用16位,报文来自哪个端口. 目的端口号: 占用16位,报文要传输到哪个端口. Seq序列号: 占用32位,一次TCP通信(从TCP连接建立到断开)过程中某一个传输方 ...

  9. 以太网帧格式 IP数据报格式 TCP数据报格式 MTU MSS

    一.以太网帧格式 下图摘自<TCP IP详解卷1:协议(第2版)>第3.2.2节以太网帧格式. 以太网帧有最小和最大尺寸.最小的帧是64字节,要求数据区(有效载荷)长度(无标签)最小为48 ...

最新文章

  1. js函数调用html对象参数传递参数吗,js里函数参数传递对象传的是指针吗
  2. OpenCV图像处理——copyTo与mask(掩码)操作
  3. FineUI控件集合
  4. springboot设置欢迎页
  5. 快速读书的方法(对于理工科的可能适用)
  6. hdu 2821 Pusher (dfs)
  7. 如何使用emacs编写c语言程序,并编译运行
  8. Jenkins+maven(testng)项目(本地项目配置)
  9. 如何优雅地使用迅雷下载百度云大文件?
  10. 课后习题讲解(免费)高数下册
  11. 中国石油安全问题及解决对策
  12. Neyman-Pearson 奈曼-皮尔逊决策分析
  13. 揭秘曝光所有互联网赚钱的秘密及方法
  14. 软考系统架构设计师论文真题汇总(2015-2017)
  15. 【经验篇】聊聊双非计算机硕士如何进大厂搞算法
  16. Python画出时钟
  17. html5 自动扣图,html5利用canvas实现颜色容差抠图功能
  18. ROS专题----tf和tf2坐标变换
  19. in a future version of numpy, it will be understood as (type, (1,))
  20. 设置IE10为非兼容性视图

热门文章

  1. python之蓝图blueprint浅析
  2. node.js:fs.open 和 fs.write 读取文件和改写文件
  3. 双鉴探测器是哪两种探测方式结合_火灾探测器、手动火灾探测器和自动火灾报警分类...
  4. c语言二分法查找次数,二分法查找
  5. 计算机协会科创部部长职责,学生会科创部工作计划
  6. 【Deep Learning笔记】神经网络基础
  7. 单引号oracle如何转义_如何在Oracle中预测和转义单引号'
  8. ai3中文语音补丁_NS 暗黑破坏神3 中文补丁今日上线!刷起来
  9. 中科大计算机应用,中科大2012计算机应用专业考研初试考什么
  10. 科学计算机求角度数,科学计算器算角度