TCP/IP协议及常见状态码(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报文格式

TCP报文格式
下面介绍几个重要字段的含义

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表现出来的,可以看看我的关于[三次握手和四次挥手]

  • 19
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值