[ TCP ] : 一个靠谱 Man 的自白

  • >.< 场景导入
    ):
    你跟你的小女朋友打电话,若一直是你的女朋友在说,而你只是在听。那么你女朋友会生气! 为啥呢? 因为她感觉你没有听她说话,然后觉得你不爱她了。 哈哈 ,通俗一点说就是 打电话时你得 “嗯 , 啊 , 我觉得是这样…”等,必须 有问有答 才能愉快的聊天。
    ):
    中间有一条河,需要将一边的货物扔向另一边,这时可不能随意,因为货物有多少,扔过去多少,对方接到了多少…双方都必须要拿一个本子记录下来。(类比于 tcp 的作用)

  • ?.? TCP报文架构图
    在这里插入图片描述

  • >.< 报文及抓包分析
    在这里插入图片描述
    1.port(端口): 不知你有没有看到图中 src port 和 Dst port ,一个是你本机的端口,另一个是 web 站点监听的 port 。(端口号类比于两栋大楼的单间号,要想大楼之间通信,必须知道对方的房间号才能准确发送)
    ps: 本机(src)端口查看命令 :打开cmd (快捷键 win + r 输入 cmd)
    在这里插入图片描述
    2.序号与确认序号(Ack / Seq):

    但你访问某东时,浏览器会将整个页面通过网络传输到你的电脑上,包括你先在看的这篇文章也是如此。 但数据量太大,一次性不可能全部发完。因此,数据得分段,分包。将部分数据放入网卡缓存中,依次发送。
    在这里插入图片描述
    tcp可是一个很靠谱的男人,不存在开完车就不负责任的。即每发完一段数据,都得等对方的 ACK ,才能继续发送剩下得数据。如图所示:
    从缓存中发送 [ 1 2 3 ],此时得 Seq(序列号) = 1 , 序列号通俗一点就是一个数据段得第一个字节。) 想想你女朋友跟你说完一句话, 你必须回应才能代表你在听她说话。 这个过程也是如此,当收到 [ 1 2 3 ] 后,必须用 确认号 回应,表示收到你所发的数据,可以继续发送。此时得 ACK( 确认号)=4.
    或者还不理解,你就这样想: (发送方:)序号是发送数据段得第一个字节,在进行段组装成包时用于定位作用。 (接收方:)确认号是收到数据段末尾一个字节自增(+1)。【让发送者下次应该发哪段数据】

    3.数据偏移:

    在 Tcp 报文中,用于区分TCP首部和 TCP 数据部分。
    在这里插入图片描述

    4.保留:

    字面意思,也就是这部分是一片真理得大海,等着你来挖掘。

    5.字母部分:
    在这里插入图片描述

    先了解每一列字母组合起来得作用:

    状态位 作用
    URG 提高数据包优先级(优先级高则先发)
    ACK 数据应答
    PSH 接收端让优先级高的包先插队进行处理
    RST 重新连接(网络异常)
    SYN 发起连接(访问某东时,或别的web站点)
    FIN 结束连接

    5.窗口:
    TCP 的窗口分为: 接收窗口,发送窗口,拥塞窗口等。你只需要知道窗口用于流量控制,拥塞控制。
    如果你对TCP如何实现流量控制感兴趣(可以点击下面的链接):
    ---------------------两个控制传送门 >.< ----------------------------------

    6.校验和:
    顾名思义,用于数据校对用。通俗点说,就是看看有啥数据传错了没。

    7.紧急指针:
    和 URG 状态位配合使用。 发送一个非常着急的数据包时,要想快速发出,必须插队排在缓存出口处,也必须标记(紧急指针的作用)这个数据段在整个包内的位置。不然接收方收到,无法拼接成完成的数据包。

    8.可变部分:
    选项,和填充部分一般很少用到,这里就不在赘述。

----------------------------------》.《---------------------------------------------------------
=.= 总结:
顺序问题,稳重不乱。
丢包问题,承诺靠谱。
连接维护,有始有终。
流量控制,把握分寸。
拥塞控制,激流勇进。

-.- 课后连接传送门 :
ICMP/IP 协议,网络世界的侦察兵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章