TCP三握四挥

Tcp和udp就像打电话通信传递,前者可靠性比后者好,udp就像使用书信方式,邮寄出去了,不保证你是否收到,可靠性不如tcp, 适合一次性传输较小数据的网络应用,如 DNS,SNMP 等。本篇介绍tcp:二者位于传输层
TCP(传输控制协议)不是HTTP的一部分,而是HTTP使用的一种传输层协议。

想必大家都听说过三次招手,四次挥手,起初我也一时半解,你们呢🤞

首先以下是在传输的几个结果参数

SYN 建立连接   SYN=1连接请求
FIN 关闭连接请求
ACK响应连接请求  ACK=1 确认有效  ACK=0确认无效
ack随机序列号+1  确认号,在请求客户端发来的随机序列号(seq)+1
seq 序列号

三次握手

草图,略显粗糙

为什么不是两次?

很简单:举个例子

如果客户端发送连接请求,但因报文丢失,接着继续发送直到服务端收到,建立连接,但是当前者报文段只是在某些网络节点滞留,延误之后才到达服务端,此时服务端误认为客户端又发出一次新的请求,客户端等待确认连接,不采用三次握手,然后客户端忽略服务端发来的确认,也不发送数据,服务端一直等待客户端发送数据,极大的浪费了资源。

SYN

很显然三次当中。服务端的资源发放在第二次握手之后,并等待客户端回复,如果将客户端伪造成不存在的IP地址请求,不断发送SYN包,服务端造成泛洪攻击,造成超时,长时间占用未连接队列,导致正常队列被丢弃,也就引起了服务端的拥堵甚至瘫痪。SYN不就是DOS/DDos攻击了吗?

四次挥手

半连接状态:

服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接,服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称之为连接队列。

当然还有一个全连接队列,就是已经完成三次握手,建立起连接的就会放在全连接队列中。如果队列满了就有可能会出现丢包现象。

2MSL

MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失,从而导致处在LAST-ACK状态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端再重传一次确认,重新启动时间等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待2MSL,而是在发送完ACK之后直接释放关闭,一但这个ACK丢失的话,服务器就无法正常的进入关闭连接状态。

草图,略显粗糙

三和四可抽象着理解就是

太抽了,仅供参考

三次😀

  • A:恋爱吗?
  • B:我爱你
  • A:我也爱你

四次😭

  • A:分手吧
  • B:好吧
  • B:是我不够帅吗?
  • A:是的
文章作者:摘星怪
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章地址及作者
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇