首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
在迎接offer的候选人1
西安工程大学 数据分析师
关注
已关注
取消关注
@黎笛:
【重点讲解】三次握手
三次握手TCP协议目的是为了保证数据能够在两端准确连续的流动,可以想象两个建立起TCP通道的设备如同接起了一根水管,数据就是水管种的水由一头流向了另一头。然而TCP为了能让一个设备连接多个水管,也就是让一个设备同时与多个设备交互信息,它必须保证不同水管之间不能产生串联或相互影响。为了确保数据能够正确分发,TCP用一种叫TCB(传输控制块)的数据结构把发给不同设备的数据封装起来,我们可以把该结构看作是信封。一个TCB数据块包含了数据发送双方对应的socket信息以及拥有装载数据的缓冲区。在两个设备要建立连接发送数据之前,双方都必须做一些准备–分配内存建立起TCB数据块0)准备工作最开始的客户端和服务器都处于CLOSE状态。主动打开连接的是客户端,被动打开的是服务器TCP服务器进程先创建传输控制块TCB,时刻准备接收客户端进程的请求,此时服务器就进入LISTEN状态1)一次握手TCP客户端也是先创建了传输控制块TCB,然后向服务器发出连接请求报文,SYN,报文首部种的同部位(SYN=1),同时选择一个序列号seq=x此时,TCP进入SYN-SENT(同步已发送状态)。TCP规定,SYN报文段不能携带数据,但需要消耗一个序号如果是发送,则需要发送一个标志位SYN=1,同时选择一个初始序列号seq=x(随机,客户端或服务器每发送一次+1)2)二次握手TCP服务器收到请求报文后,如果同意连接,则发出确认报文。收到报文,则需要发送一个确认标志位ACK=1,并且确认序列号ack=x+1,然后发出报文,需要一个发送标志位SYN=1,同时选择一个初始序列号seq=y(随机)3)TCP客户端收到确认后,还要向服务器给出确认。收到报文,发送一个确认标志位ACK=1,确认序列号ack=y+1,seq=x+1 。为什么TCP客户端还要最后再发一次确认呢主要防止已经失效的连接请求报文又突然传送到了服务器,从而产生错误四次挥手数据传输完毕后,双方都可释放连接。最开始的时候,客户端和服务器都是处于established状态。然后客户端主动关闭,服务器被动关闭。1)TCP客户端收到一个FIN(关闭连接),用来关闭客户端到服务器的数据传送2)服务器收到这个FIN,它发回一个ACK客户端发送完所有的数据,请求关闭连接,向服务器申请关闭,但与此同时,服务器未必就把所有的数据全部向客户端发送完毕,所以在第二步和第三步之间,服务器可以继续数据传输3)服务器关闭客户端的连接,发送一个FIN给客户端4)客户端发回ACK报文确认,并将确认序号设置为收到序号+1为什么客户端最后还要等待2MSL去向ACK消息最大存活时间(MSL)+ 来向FIN消息的最大存活时间(MSL)第一,保证客户端发送的最后一个ACK报文能够到达服务器第二,释放的端口可能重连刚断开的服务器端口,这样依然存活在网络里的老的TCP报文可能与新的TCP连接报文冲突如果已经建立连接了,但是客户端突然出现故障了怎么办TCP还设有一个保活计时器。客户端出现故障,服务器不能一直等下去12.TCP协议是如何保证可靠传输的数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时 TCP 发送数据端超时后会重发数据;对失序数据包重排序:既然 TCP 报文段作为 IP 数据报来传输,而 IP 数据报的到达可能会失序,因此 TCP 报文段的到达也可能会失序。TCP 将对失序数据进行重新排序,然后才交给应用层;丢弃重复数据:对于重复数据,能够丢弃重复数据;应答机制:当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;超时重发:当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;流量控制:TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP 使用的流量控制协议是可变大小的滑动窗口协议。
点赞 3
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
01-23 16:37
西安电子科技大学 Java
前端高频面试题:为什么 sessionStorage 在不同 Tab 页不共享?
这是一个非常经典的前端面试题,也是实际开发中容易产生误解的地方。简单直接的回答是:这是由 W3C 标准明确设计的。sessionStorage 的设计初衷就是为了“隔离”,而不是“共享”。以下是详细的深度解析,帮助你彻底理解其中的逻辑:1. 核心定义:什么是“Session”?在 sessionStorage 的语境下,“Session(会话)”的定义范围被严格限制在当前标签页(Tab)或当前窗口(Window)中。LocalStorage 的范围: 同源(Same Origin) + 浏览器实例。只要域名一样,所有 Tab 共享数据。SessionStorage 的范围: 同源 + 顶级浏览...
查看3道真题和解析
点赞
评论
收藏
分享
01-21 15:35
门头沟学院 Java
实习不做“工具人”!这3个隐藏技巧,让你的产出翻倍
很多实习生都有过这样的困惑:每天埋头写CRUD、改bug,看似忙忙碌碌,可实习结束回头一看,除了一份实习证明,啥硬核收获都没有。其实不是实习没价值,而是你没找对“挖干货”的方式。结合我两段实习的踩坑与总结,分享3个能快速提升产出的技巧,尤其适合技术岗同学,帮你从“打杂仔”变身“有料人”一、啃透官方文档:比自己瞎练10个小项目更有用刚实习时我总沉迷自己写小demo,觉得“动手才是王道”,直到偶然翻了公司的项目架构文档,才发现自己写的都是“小卡拉米项目”——没有复杂场景的解决方案,更没有工业级的技术考量。公司沉淀的文档(架构文档、方案文档、技术栈文档),全是前辈踩坑无数总结的实战精华。比如架构文档...
实习教会我的事
点赞
评论
收藏
分享
01-26 09:51
门头沟学院 Java
学院本简历求拷打
希望各位大佬能给些建议
点赞
评论
收藏
分享
2025-12-15 09:37
已编辑
门头沟学院 Java
华子被鸽穿了?
最近看见好几个群都在转发这条,华子毕竟是制造业大厂还能鸽穿?是不是这个部门开的13a太多了吧13a是真没啥性价比
强大的马里奥:
13a也会有人接的,不愁招不满
面试线索爆料
点赞
评论
收藏
分享
01-21 20:07
武汉大学 Java
20260117【小红书】笔试算法真题(共3题)
题目1:行为权重1
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
牛客吐槽大会 | 有槽不吐,留着过年?吐完领现金红包,痛快!
2139
2
...
J人永远闲不下来于是去提前实习
1936
3
...
拥抱AI,程序员的最后出路
1859
4
...
mentor视角下的优秀实习生
1717
5
...
真正会被取代的,是你心里面的幻觉
1617
6
...
努力挣钱的意义具象化了
1368
7
...
大厂提前实习对AI开发的新感悟
1301
8
...
马斯克最新炸裂采访,AI会带走一半工作岗位,普通人将何去何从?
1259
9
...
去独角兽做龙头还是去大厂做凤尾
1202
10
...
我身材再曼妙,也没有我的工资好笑!
1177
创作者周榜
更多
正在热议
更多
#
牛客吐槽大会
#
2794次浏览
63人参与
#
机械人你知道哪些单休企业
#
83064次浏览
414人参与
#
今年春招是金一银二嘛?
#
8117次浏览
111人参与
#
参加完秋招的机械人,还参加春招吗?
#
103638次浏览
684人参与
#
1月小结:你过的开心吗?
#
1841次浏览
51人参与
#
抛开难度不谈,你最想去哪家公司?
#
4280次浏览
110人参与
#
为什么有人零实习也能进大厂?
#
4986次浏览
121人参与
#
机械人春招想让哪家公司来捞你?
#
379240次浏览
3140人参与
#
AI时代的工作 VS 传统时代的工作,有哪些不同?
#
8219次浏览
197人参与
#
AI求职实录
#
3485次浏览
101人参与
#
当你问AI“你会取代我的工作吗”,它说_?
#
3663次浏览
134人参与
#
赚钱的意义在这一刻具象化
#
3916次浏览
94人参与
#
没关系,至少我的__很曼妙
#
3678次浏览
65人参与
#
你的第一家实习公司是什么档次?
#
4187次浏览
70人参与
#
你的landing期是如何度过的?
#
8578次浏览
163人参与
#
除了Java,最推荐学什么技术?
#
5637次浏览
143人参与
#
一人一道大厂面试题
#
114091次浏览
1263人参与
#
你觉得什么岗位会被AI替代
#
36775次浏览
255人参与
#
你在职场上见过哪些“水货”同事
#
30737次浏览
167人参与
#
设计人如何选offer
#
187117次浏览
864人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务