2023年7月31日发(作者:)
TCP(传输控制协议)TCP(传输控制协议)传输控制协议(Transmission Control Protocol,TCP)是⼀种⾯向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
在因特⽹协议族(Internet protocol suite)中,TCP层是位于IP层之上,应⽤层之下的中间层。⼀、TCP/IP协议族TCP/IP(TCP/IP Protocol Suite)是⼀个协议族,包含两个核⼼协议:TCP(传输控制协议)和IP(⽹际协议),类似计算机科学中的堆栈,因此⼜被称为TCP/IP协议栈,分为四个层次:TCP/IP各个分层详解应⽤层⼤多数普通与⽹络相关的程序为了通过⽹络与其他程序通信所使⽤的层。这个层的处理过程是应⽤特有的;数据从⽹络相关的程序以这种应⽤内部使⽤的格式进⾏传送,然后被编码成标准协议的格式。应⽤层负责处理特定的应⽤程序细节。包括Telnet(远程登录)、FTP(⽂件传输协议)、SMTP(简单邮件传送协议)以及SNMP(简单⽹络管理协议)等。传输层两台主机上的应⽤程序提供端到端的通信,有2种传输协议:TCP(传输控制协议)和UDP(⽤户数据报协议)。TCP为两台主机提供⾼可靠性的数据通信。包括把应⽤程序交给它的数据分成合适的⼩块交给下⾯的⽹络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。UDP为提供⼀种⾮常就爱男单的服务。它只是把称作数据报的分组从⼀台主机发送到另⼀台主机,但并不保证该数据报能到达另⼀端。任何必须的可靠性必须由应⽤层来提供。⽹络互联层处理分组在⽹络中的活动,例如分组的选路。⽹络层协议包括IP协议(⽹际协议)、ICMP协议(Internet互联⽹控制报⽂协议),以及IGMP协议(Internet组管理协议)。⽹络接⼝层也称作数据链路层,包括操作系统中的设备驱动程序和计算机中对应的⽹络接⼝卡。⼀起处理与电缆(或其他任何传输媒介)的物理接⼝细节。wireshark抓到的包与对应的协议层如下图所⽰:wireshark(前称Ethereal)是⼀个⽹络数据包分析软件。⽹络数据包分析软件的功能是截取⽹络数据包,并尽可能显⽰出最为详细的⽹络数据包数据。wireshark抓到的包与对应的协议层如下图所⽰:1、Frame:物理层的数据帧概况2、Ethernet II:数据链路层以太⽹帧头部信息3、Internet Protocol Version 4:互联⽹层IP包头部信息4、Transmission Control Protocol:传输层的数据段头部信息,此处是TCP5、Hypertext Transfer Protocol:应⽤层的信息,此处是HTTP协议⼆、TCP协议TCP是⼀种⾯向连接(连接导向)的、可靠的基于字节流的传输层通信协议。TCP将⽤户数据打包成报⽂段,它发送后启动⼀个定时器,另⼀端收到的数据进⾏确认、对失序的数据重新排序、丢弃重复数据。TCP协议的特点:1、⾯向连接;2、每⼀条TCP连接只能有两个端点,每⼀条TCP连接只能是点对点的;3、TCP提供可靠交付的服务;4、TCP提供全双⼯通信。数据在两个⽅向上独⽴的进⾏传输。因此,连接的每⼀端必须保持每个⽅向上的传输数据序号;5、⾯向字节流。⾯向字节流的含义:虽然应⽤程序和TCP交互是⼀次⼀个数据块,但TCP把应⽤程序交下来的数据仅仅是⼀连串的⽆结构的字节流TCP头部信息指定通信的源端端⼝号、⽬的端端⼝号、管理TCP连接,控制两个⽅向的数据流TCP报⽂⾸部,如下图所⽰:TCP报⽂各个位置详解:1、源端⼝号:数据发起者的端⼝号,16bit2、⽬的端⼝号:数据接收者的端⼝号,16bit3、序号:32bit的序列号,由发送⽅使⽤4、确认序号:32bit的确认号,是接收数据⽅期望收到发送⽅的下⼀个报⽂段的序号,因此确认序号应当是上次已成功收到数据字节序号加15、⾸部长度:⾸部中32bit字的数⽬,可表⽰15*32bit=60字节的⾸部。⼀般⾸部长度为20字节。6、保留:6bit,均为07、紧急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三次握⼿TCP建⽴连接时,会有三次握⼿过程,如下图所⽰,wireshark截获到了三次握⼿的三个数据包,第四个包才是http的,说明http的确是使⽤TCP建⽴连接的。TCP三次握⼿流程图下⾯来逐步分析三次握⼿过程:第⼀次握⼿:客户端向服务端发送连接请求包,标志位SYN(同步序号)置为1,序号为X=0。第⼀次对应TCP⾸部第⼆次握⼿:服务器收到客户端发过来报⽂,由SYN=1知道客户端要求建⽴联机。向客户端发送⼀个SYN和ACK都置为1的TCP报⽂,设置初始序号Y=0,将确认序号(Acknowledgement Number)设置为客户的序列号加1,即X+1 = 0+1 = 1,如下图:第⼆次对应TCP⾸部第三次握⼿:客户端收到服务器发来的包后检查确认序号(Acknowledgement Number)是否正确,即第⼀次发送的序号加1(X+1=1)。以及标志位ACK是否为1。若正确,ACK标志位为1,SYN标志位为0。确认序号(AcknowledgementNumber)=Y+1=0+1=1,发送序号为X+1=1。服务端收到后确认序号值与ACK=1,则连接建⽴成功,可以传送数据。第三次对应TCP⾸部四、TCP四次挥⼿TCP断开连接时,会有四次断开过程,如下图所⽰,wireshark截获到了四次断开的四个数据包。TCP四次挥⼿流程图:下⾯来逐步分析四次挥⼿过程:1、第⼀次挥⼿:客户端给服务器发送TCP包,⽤来关闭客户端到服务器的数据传送。将标志位FIN和ACK置为1,序号为X=1,确认序号为Z=1。第⼀次挥⼿对应TCP⾸部2、第⼆次挥⼿:服务器收到FIN后,发回⼀个ACK(标志位ACK=1),确认序号为收到的序号加1,即X=X+1=2。序号为收到的确认序号=Z。第⼆次挥⼿对应TCP⾸部3、服务器关闭与客户端的连接,发送⼀个FIN。标志位FIN和ACK置为1,序号为Y=1,确认序号为X=2。第三次挥⼿对应TCP⾸部4、客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认序号为收到的序号加1,即Y+1=2。序号为收到的确认序号X=2。第四次挥⼿对应TCP⾸部
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690781103a424496.html
评论列表(0条)