TCPIP协议及常见状态码(SYN,FIN,ACK,PSH,RST)
TCP/IP协议及常见状态码(SYN,FIN,ACK,PSH,RST)
对于软件测试⼯程师、前后端⼯程师、⽹络⼯程师、运维⼯程师等都需要对计算机⽹络基础知识有⼀定的了解。
我最近也在系统学习计算机⽹络知识,为防⾃⼰忘记,特意把这⼏天在⽹上搜到的知识梳理起来,整理成⼀系列计算机⽹络知识,⼀⽅⾯可以使⾃⼰理解得更加透彻,另⼀⽅⾯也希望能帮助想要学习的你~
1、TCP/IP协议
TCP/IP协议(Transmission Control Protocol/Internet Protocol),中译名为传输控制协议/因特⽹互联协议,⼜名⽹络通讯协议,是Internet最基本的协议、Internet国际互联⽹络的基础,由⽹络层的IP协议和传输层的TCP协议组成。
TCP/IP 定义了电⼦设备如何连⼊因特⽹,以及数据如何在它们之间传输的标准。协议采⽤了4层的层级结构(应⽤层、传输层、⽹际层,⽹络接⼝层),每⼀层都呼叫它的下⼀层所提供的协议来完成⾃⼰的需求。通俗⽽⾔:TCP负责发现传输的问题,⼀有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到⽬的地。⽽IP是给因特⽹的每⼀台联⽹设备规定⼀个地址。
ps:OSI模型分为七层,分别是应⽤层、表⽰层、会话层,传输层,⽹络层,数据链路层、物理层
2、TCP协议原理
TCP每发送⼀个报⽂段,便启动⼀个定时器,若在定时器超时之间还未收到ACK请求确认,就重传该报⽂,如图,数据包由A的缓冲区发往B,B在收到数据包之后,回发⼀个ACK确认包给A,之后将数据包从缓冲区释放。
因此,该数据包会⼀直缓冲在A的缓冲区,直到⼀个ACK确认为⽌。
3、TCP报⽂格式tcpip协议pdf
下⾯介绍⼏个重要字段的含义
1)序号:Seq序号,占32位,⽤来标识从TCP源端向⽬的端发送的字节流,发起⽅发送数据时对此进⾏标记。
2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等。
标志
位
意义
URG 指⽰报⽂段⾥存在着被发送⽅的上层实体标记为”紧急”数据,当URG=1时,其后的紧急指针指⽰紧急数据在当前数据段中的位置(相对于当前序列号的字节偏移量),TCP接收⽅必须通知上层实体。
ACK当ACK=0时,表⽰该数据段不包含确认信息,当ACK=1时,表⽰该报⽂段包括⼀个对已被成功接收报⽂段的确认。PSH当PSH=1时,接收⽅在收到数据后⽴即将数据交给上层,⽽不是直到整个缓冲区满。
RST ⽤于重置⼀个已经混乱的连接(如主崩溃),也可⽤于拒绝⼀个⽆效的数据段或者拒绝⼀个连接请求。⼀般⽽⾔,如果你得到的数据段被设置了RST 位,那说明你这⼀端有问题了。
SYN ⽤于建⽴连接过程,在连接请求中,SYN=1和ACK=0表⽰该数据段没有使⽤捎带的确认域,⽽连接应答捎带⼀个确认,即SYN=1和ACK=1。注:捎带是指对客户机到服务器数据的确认被装载在⼀个承载服务器到客户机的数据
FIN ⽤于释放⼀个连接,表⽰发送⽅已经没有数据要传输了。此时,接收⽅可能继续接收数据,好在SYN和FIN数据段都有序列号,从⽽保证了这两种数据段以正确顺序被处理
4、三次握⼿的状态码
SYN(Synchronize Sequence Number)同步序列号,表⽰建⽴连接;
ACK(Acknowledgement)即确认字符,表⽰响应;
FIN(Finish)表⽰关闭连接;
PSH(Push)表⽰DATA数据传输;
RST(Reset)表⽰重置
当SYN和ACK同时为1它表⽰的建⽴连接之后的响应;若只是单个SYN,表⽰的只是建⽴连接。⾯试官经常问的三次握⼿就是通过这样的ACK表现出来的,可以看看我的关于
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论