【Java八股-第十七期】TCP模型 - 计算机网络

提纲:

🔥TCP模型

  • TCP首部字段

  • 三次握手

  • 四次挥手

  • TCP粘包与拆包

  • TCP的可靠传输

  • 拥塞算法

🎈面试八股真题——【Java八股-第十九期】Socket 统一总结

一、TCP模型

1. TCP首部字段

  • 1、源端口号与目标端口号

  • 2、序列号SN:表示当前发送的字节流数据第一个字节的编号

  • 3、确认号ACK:表示从确认号N之前的数据都已接收完毕

  • 4、控制位

    • SYN:表示建立连接请求

    • ACK:表示ACK确认号是否有效

    • FIN:表示终端连接请求

    • URG:表示紧急数据包,不会在缓冲中等待

    • PSH:表示将本数据包与缓冲中所有数据包发出

    • RST:表示连接出错,需要重新连接

  • 5、校验和——校验数据在传输过程中是否发生改变

  • 6、滑动窗口——由接收方根据流量控制(当前接收方缓冲区剩余大小)与拥塞控制(全局网络拥塞情况)计算得到,用来限制发送方单次传输数据大小上限,防止数据在传输过程中因接收能力丢失

2.三次握手

  • 1、客户端向服务端发送一个控制位ACK=0,SYN=1的数据包表示请求建立连接,发送后客户端进入SYN-SENT状态

  • 2、服务端接收到数据包后,分配缓存空间,并返回给客户端一个ACK=1,SYN=1的数据包,确认号ack为客户端数据包序列号加一,服务端进入SYN-RCVD状态

  • 3、客户端接收到数据包后,返回给客户端ACK=1的数据包,进入Establish状态,传输连接正式建立

3.四次挥手

  • 1、客户端完成所有数据传输,向服务端发送一个FIN=1的终止连接报文,并设置序列号为传输数据的最后一个字节序号,发送后客户端进入FIN-Wait一阶段

  • 2、服务端接收到终止连接报文,并返回给客户端一个ACK确认报文,此时客户端进入FIN-Wait二阶段,客户端无法再进行数据传输,然而服务端可能还存在没有发送给客户端的数据,因此不能立刻关闭连接

  • 3、服务端在发送完所有数据后,再发送一个ACK=1,FIN=1的终止确认给客户端,此时服务端进入LAST-ACK状态

  • 4、客户端收到响应后,返回给服务端一个ACK=1的响应,并进入TIME-WAIT状态,等待时间为2MSL,即两倍的最大数据段传输时间

4.TCP粘包与拆包

  • UDP基于用户数据报传输,给多少发多少,并在首部记录了数据包长度,不存在粘包问题

  • TCP是基于报文段的字节流传输,在传输时会根据发送缓冲区剩余大小将一个大的应用层数据包拆成多个数据段,或将多个小包粘成一个数据段传输,从而造成数据的边界模糊问题

  • TCP报文段长度还收到MSS,即最大报文长度控制,MSS = MTU - IP首部 - TCP首部,MTU即最大数据长度,一个以太网帧数据长度为1518字节(MTU=1500)

  • 解决方法

    • 1、在数据包结尾添加标识符:FTP协议

    • 2、每次发送固定长度的数据包,不足的部分用0比特填充

    • 3、在数据包首部添加数据长度

5.TCP的可靠传输

  • 1、客户端与服务端通过三次握手确认连接,确保双方收发功能正常

  • 2、应答机制:即发送方通过isn序列号告知接收方数据顺序,接收方通过返回

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

代码鹿のJAVA八股面试题总结 文章被收录于专栏

【📫专栏目录在最底部📫】 - 本专栏适合于JAVA已经入门的学生或人士,有一定的编程基础。 - 本专栏特点: 本专刊囊括了JAVA、Spring、计算机网路、操作系统、计算机网络、MySQL、算法与数据结构、中间件等一系列知识点,总结出了高频面试考点(附有答案),事半功倍,为大家春秋招助力。 - 本专栏内容分为五章

全部评论
有些地方写错了吧,不检查一下吗
点赞 回复 分享
发布于 2022-07-16 11:49
最后一句,是不是写反了。窗口小于慢开始门限的时候,用的是慢开始算法吧
点赞 回复 分享
发布于 2022-07-12 22:01
拥塞算法快重传写错了吧,应该是重传丢失的数据,ACK = 23801 的 ACK 包代表23801的数据已经被接收方收到了,怎么还会重传呢?
点赞 回复 分享
发布于 2022-07-08 01:35

相关推荐

07-14 13:47
门头沟学院 Java
Lynn012:你评估好自己的位置了吗《顶尖应届》
投递小米集团等公司7个岗位
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
昨天 18:05
门头沟学院 Java
挂了 正式批求捞
投递滴滴等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务