tcp协议

本文详细介绍了TCP协议的三次握手过程,包括SYN、ACK标志位的作用,以及在第三次ACK丢失时的重传机制。同时,讨论了TCP连接关闭的过程,MAC帧在路由器与交换机中的变化,以及TCP报文格式、滑动窗口、序列号回绕等概念。此外,还提及了浏览器多Tab访问同一网站时的连接复用问题。
摘要由CSDN通过智能技术生成

一、TCP协议

1.1 三次握手

tcp报文格式
在这里插入图片描述
上面是TCP报文的结构
源端口:
目的端口:
序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。

确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。

六个标志位,每个标志位占1位
确认标志位 ACK:仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效
同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。

终止标志位 FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接

PS:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。
紧急标志位 URG:
复位标志位 RST:

握手过程异常情况及处理方案
第三次ACK报文丢失
如果第三个报文丢失,那么Server 端该TCP连接的状态为SYN_RECV,服务端会根据 TCP的超时重传机制,等待3秒、6秒、12秒后重新发送SYN+ACK包,以便Client重新发送ACK包。Server重发SYN+ACK包的次数,可以通过设置/proc/sys/net/ipv4/tcp_synack_retries修改,默认值为5.如果重发指定次数之后,仍然未收到 client 的ACK应答,那么一段时间后,Server自动关闭这个连接。
由于客户端发出第三个报文后就处于ESTABLISHED状态,此时是可以发送数据的,如果第三次ACK报文丢失,此时服务端将返回RST报文给客户端。

来源
https://www.cnblogs.com/bj-mr-li/p/11106390.html
https://www.cnblogs.com/loveLands/articles/9828841.html

MAC帧在经过路由器时,其源地址和目的地址会发生改变,路由器的目的地址会出现子在MAC帧中
帧经过交换机时,其源、目标MAC是不会变的,一句话:二层转发不改变帧的MAC地址、IP地址;
帧经过路由器时,进行路由转发,IP地址是不会变的,但MAC地址必定会变
举个例子:
A----B----C-----D 四个路由器
比如A发送报文给D,
1)A发出的是:源、目标IP是AD,源目标MAC是AB相对接口的MAC
2)B转发给C的是:源目标IP是AD,原目标MAC是BC相对接口的MAC
3)C转发给D的是:源目标IP是AD,原目标MAC是CD相对接口的MAC
D收到的帧是:源目标IP是AD,源目标MAC是CD相对接口的MAC
对帧当中的IP地址的理解:发货人、收货人
对帧当中的MAC地址的理解:
源MAC:货物中途所经过的上一个驿站
目标MAC:货物中途所要到达的下一个驿站

https://zhidao.baidu.com/question/457424520349906925.html

关闭连接过程
socket close 过程

tcp常见问题

面试官,不要再问我三次握手和四次挥手

tcp 报文格式

tcp 滑动窗口

tcp 序列号回绕
tcp 序列号回绕与解决

滑动窗口RWND 和 拥塞窗口 CWND
tcp retransmission

tcp 协议(ws和timestamp选项)
tcp receive window
tcp timestamp option

四个实验,彻底搞懂tcp连接

https://blog.51cto.com/u_15067225/4334375

在浏览器中多个tab页,访问同一个网站,这些连接是否复用了?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值