标签:三次握手 2-2 version tcp协议 协议栈 content 窗口 数据量 smtp
传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。
TCP/IP(TCP/IP Protocol Suite)是一个协议族,包含两个核心协议:TCP(传输控制协议)和IP(网际协议),类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈,分为四个层次:
应用层
传输层
网络互联层
网络接口层
wireshark抓到的包与对应的协议层如下图所示:
1、Frame:物理层的数据帧概况
2、Ethernet II:数据链路层以太网帧头部信息
3、Internet Protocol Version 4:互联网层IP包头部信息
4、Transmission Control Protocol:传输层的数据段头部信息,此处是TCP
5、Hypertext Transfer Protocol:应用层的信息,此处是HTTP协议
TCP是一种面向连接(连接导向)的、可靠的基于字节流的传输层通信协议。TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认、对失序的数据重新排序、丢弃重复数据。
TCP协议的特点:
1、面向连接;
2、每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的;
3、TCP提供可靠交付的服务;
4、TCP提供全双工通信。数据在两个方向上独立的进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号;
5、面向字节流。面向字节流的含义:虽然应用程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅是一连串的无结构的字节流
指定通信的源端端口号、目的端端口号、管理TCP连接,控制两个方向的数据流
TCP报文首部,如下图所示:
TCP报文各个位置详解:
1、源端口号:数据发起者的端口号,16bit
2、目的端口号:数据接收者的端口号,16bit
3、序号:32bit的序列号,由发送方使用
4、确认序号:32bit的确认号,是接收数据方期望收到发送方的下一个报文段的序号,因此确认序号应当是上次已成功收到数据字节序号加1
5、首部长度:首部中32bit字的数目,可表示15*32bit=60字节的首部。一般首部长度为20字节。
6、保留:6bit,均为0
7、紧急URG:当URG=1时,表示报文段中有紧急数据,应尽快传送;
8、确认比特ACK:ACK = 1时代表这是一个确认的TCP包,取值0则不是确认包;
9、推送比特PSH:当发送端PSH=1时,接收端尽快的交付给应用进程;
10、复位比特(RST):当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接;
11、同步比特SYN:在建立连接是用来同步序号。SYN=1,ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。
12、终止比特FIN:FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。
13、窗口:用来控制对方发送的数据量,通知发放已确定的发送窗口上限。
14、校验和:该字段检验的范围包括首部和数据这两部分。由发端计算和存储,并由收端进行验证。
15、紧急指针:紧急指针在URG=1时才有效,它指出本报文段中的紧急数据的字节数。
16、选项:长度可变,最长可达40字节。
wireshark捕获到的TCP包中的每个字段如下图所示:
TCP建立连接时,会有三次握手过程,如下图所示,wireshark截获到了三次握手的三个数据包,第四个包才是http的,说明http的确是使用TCP建立连接的。
TCP三次握手流程图
下面来逐步分析三次握手过程:
TCP断开连接时,会有四次断开过程,如下图所示,wireshark截获到了四次断开的四个数据包。
TCP四次挥手流程图:
下面来逐步分析四次挥手过程:
标签:三次握手 2-2 version tcp协议 协议栈 content 窗口 数据量 smtp
原文地址:https://www.cnblogs.com/joeylee97/p/9191343.html