tcp tcp协议三次握手过程 属于前端知识吗

没有更多推荐了,
不良信息举报
举报内容:
TCP的连接建立(三次握手)
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!腾讯面试题:tcp三次握手的过程,accept发生在三次握手哪个阶段? .
[问题点数:20分,结帖人wukui1008]
腾讯面试题:tcp三次握手的过程,accept发生在三次握手哪个阶段? .
[问题点数:20分,结帖人wukui1008]
只显示楼主
取消只显示楼主
匿名用户不能发表回复!|TCP三次握手原理?_百度知道
TCP三次握手原理?
我有更好的答案
一、TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念: 未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。 Backlog参数:表示未连接队列的最大容纳数目。 SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。 半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
为您推荐:
其他类似问题
三次握手的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。图解 TCP 三次握手与四次挥手 - V2EX
图解 TCP 三次握手与四次挥手
314 天前 &enocher
TCP 三次握手和四次挥手不管是在开发还是面试中都是一个非常重要的知识点,它是我们优化 web 程序性能的基础。但是大部分教材都对这部分解释的比较抽象,本文我们就利用 wireshark 来抓包以真正体会整个流程的细节。
根据下面这幅图我们来看一下 TCP 三次握手。p.s: 每个箭头代表一次握手。
第一次握手
client 发送一个SYN(J)包给 server,然后等待 server 的 ACK 回复,进入SYN-SENT状态。p.s: SYN 为 synchronize 的缩写,ACK 为 acknowledgment 的缩写。
第二次握手
server 接收到 SYN(seq=J)包后就返回一个ACK(J+1)包以及一个自己的**SYN(K)**包,然后等待 client 的 ACK 回复,server 进入SYN-RECIVED状态。
第三次握手
client 接收到 server 发回的 ACK(J+1)包后,进入ESTABLISHED状态。然后根据 server 发来的 SYN(K)包,返回给等待中的 server 一个ACK(K+1)包。等待中的 server 收到 ACK 回复,也把自己的状态设置为ESTABLISHED。到此 TCP 三次握手完成,client 与 server 可以正常进行通信了。
为什么要进行三次握手
我们来看一下为什么需要进行三次握手,两次握手难道不行么?这里我们用一个生活中的具体例子来解释就很好理解了。我们可以将三次握手中的客户端和服务器之间的握手过程比喻成 A 和 B 通信的过程:
在第一次通信过程中,A 向 B 发送信息之后,B 收到信息后可以确认自己的收信能力和 A 的发信能力没有问题。
在第二次通信中,B 向 A 发送信息之后,A 可以确认自己的发信能力和 B 的收信能力没有问题,但是 B 不知道自己的发信能力到底如何,所以就需要第三次通信。
在第三次通信中,A 向 B 发送信息之后,B 就可以确认自己的发信能力没有问题。
上面分析还不够形象,很容易忘记,下面我们利用 wireshark 来证明一下上面的分析过程。从下面的的输出就可以很容易看出来,必须要经过前面的三次 tcp 请求才会有起一次 http 请求。
第一次请求客户端发送一个 SYN 包,序列号是 0。
第二次请求服务器会发送一个 SYN 和一个 ACK 包,序列号是 0,ack 号是 1。
第三次本地客户端请求会发送一个 ACK 包,序列号是 1,ack 号是 1 来回复服务器。
以下面这张图为例,我们来分析一下 TCP 四次挥手的过程。
第一次挥手
client 发送一个FIN(M)包,此时 client 进入FIN-WAIT-1状态,这表明 client 已经没有数据要发送了。
第二次挥手
server 收到了 client 发来的 FIN(M)包后,向 client 发回一个ACK(M+1)包,此时 server 进入CLOSE-WAIT状态,client 进入FIN-WAIT-2状态。
第三次挥手
server 向 client 发送FIN(N)包,请求关闭连接,同时 server 进入LAST-ACK状态。
第四次挥手
client 收到 server 发送的 FIN(N)包,进入TIME-WAIT状态。向 server 发送**ACK(N+1)**包,server 收到 client 的 ACK(N+1)包以后,进入CLOSE状态; client 等待一段时间还没有得到回复后判断 server 已正式关闭,进入CLOSE状态。
References
欢迎大家关注我的公众号ziwenxie_mj订阅我上的原创文章 :)
p.s: 如有错误,还望指正 :)
4420 次点击所在节点 &
est314 天前LZ 放心。在公众号写技术文章没人看的。
introom314 天前@ 写鸡汤?
SKull4314 天前每次握手,回首出现了问题会怎样
zealot0630313 天前&为什么要进行三次握手& 这个问题回答到并不好 我只能给 4/10 分
zealot0630313 天前三次握手其中一个功能是防 DDOS,先领会到这里能拿及格分
ibufu313 天前还以为是来讲笑话的
enocher313 天前@ 以第三次客户端没有发送给服务器 ack 请求为例子,这里涉及到超时和重传机制,这个时候服务器没法进入 ESTABLISHED 状态,如果超过一定时间服务器后向客户端发送 RTS 报文,同时进入 CLOSED 状态。深入一点也可以去了解一下 syn 攻击之类的 :)
ajan313 天前完全没有在微信里看文章的癖好~
Geoion313 天前没人会在公众号看技术文章的,据我观察在朋友圈转发技术文章的,都是没有女朋友的。
araraloren313 天前MARK
@ 还行,只要文章好还是有人看的,我就关注了 CloudMan,写的关于云和容器的东西还不错,每天 5 分钟。。
Chingim313 天前@ 如何防 ddos,期待展开
woshixiaohao1982313 天前@ #5 ddos 实际上 根本防不了,链路层上 就打垮你了
panda1001313 天前@
@ 指出的 syn 攻击就是利用三次握手机制 不知到是怎么防止 ddos ?
andyL313 天前Mark
andyL313 天前不该 mark 的,直接收藏了。
期待前排大佬能把争论的地方讲具体、讲清晰一点
anxious313 天前建立连接三次握手,常见的有一个 SYN 攻击。
在三次握手的过程中,server 端会维护一个队列,这个队列中都是 已经向 client 返回 ACK,并等待 client ACK 的请求。
如果 client 在此时恶意的不发送 ACK,而是不停的发送 SYN,
就会导致 SERVER 端 的队列被占满,无法接受正常的 TCP 三次握手请求。
qien313 天前TIME_WAIT 状态是怎样产生的,为什么要这样做?
xx998313 天前@ 多谢科普
ivechan313 天前为什么要把教科书搬到微信公众号上。。
enocher313 天前@ The client waits for a period of time equal to double the maximum segment life (MSL) time, &b&to ensure the ACK it sent was received.&/b&
第 1 页 / 共 3 页
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到
上打开本讨论主题的完整版本。
是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
is a community of developers, designers and creative people.TCP 为什么是三次握手,而不是两次或四次? - 知乎<strong class="NumberBoard-itemValue" title="被浏览<strong class="NumberBoard-itemValue" title="8,960分享邀请回答215 条评论分享收藏感谢收起

我要回帖

更多关于 tcp协议三次握手过程 的文章

 

随机推荐