怎么判断tcp重组完成_网络工程师进阶史·TCP/IP协议

轻轻的,小刚打开QQ,看着好友栏里熟悉的那个头像,依旧是那么的漂亮,依旧是那么的安静。

仿佛透过这个头像,就能够看到屏幕后方的那个她,明媚的笑容,恬静的气质,优雅的举止,一切的一切都是那么的令人回味,可惜,已经好久没有联系过了,单恋就是一个的兵荒马乱。

今天打开对话框,是听人说,好像她要结婚了,很可惜从来没有认真的聊过天,身为一个网络工程师,和网络设备打交道的时间远远高于想她的时间。

“听说你要结婚了?”小刚对话框里的光标不断闪烁着,可是发送键一直不敢按下去,内心中充斥着复杂的情绪,双手合十,轻轻呢喃道:“TCP/IP,拜托了!”

小刚提到的TCP/IP是什么呢,为什么要拜托它呢?

前文中我们已经讲过了OSI,它呢是ISO标准化组织为了实现设备互联,能够相互通信而提出的一个模型,他严谨的告诉了我们,一个网络应该具备哪些功能,也提到了这些功能能够实现时应该在哪个层次。

但是呢,对于这个模型中的功能技术,如何具体实现是没有进行规范的,也就是说OSI更像是一个旗帜,一个标杆。

这个时候TCP/IP协议就脱颖而出,它不仅仅只是TCP和IP这两个协议,他是整个协议簇的代表,是网络通信中一套协议的总称。

TCP/IP协议和OSI七层模型他们之间有着主要的区别,OSI定义了这个协议应该拥有什么功能,而TCP/IP协议呢,则更强调在实现该协议时,应该开发何种程序。

我们可以通过图片,来详细看一下TCP/IP协议与OSI模型的对比。

c675eed5ead3ae4ee65b76ff59c09841.png

在图片中我们可以明确的看到,OSI的上三层,在TCP/IP中仅用了一层来定义,而末尾的数据链路层与物理层,则合并成为了数据链路层。

我们要知道,OSI中,在网络层是支持多种网络协议的,比如IP协议,IPX协议,AppleTalk协议等,而TCP/IP顾名思义,只支持IP协议,而事实上,目前主流的协议,就是IP协议。

接下来我们就来讲一下,小刚的消息应该如何通过TCP/IP协议,到达心仪的窗口的。

那便不得不了解下TCP/IP中,每一层的详细定义:

数据链路层——磐石之基·通讯之本

这一层又叫做网络接口层,与OSI相比合并了物理层与数据链路层,在这一层包括如何定义物理介质,如何访问和共享介质,以及在数据发送之前如何将其变成数据帧。

网络层——选路规划·绝对大脑

这一层又叫做Internet层,在这一层中定义了数据包以及IP地址的格式,对于经过网络传输的数据,同时进行路径选择,他是我们在TCP/IP中比较重要的一层。

赠人玫瑰,手有余香,一边观看一边点赞收藏的人,配的路由条条皆通,IE证书一遍就过。

传输层——精确连接·高速公路

传输层是TCP/IP的核心层,顾名思义,负责端到端的连接,保证数据能够实现正确且稳定的传输,这一层主要对数据进行服务点编址、分段与重组、连接控制、流量控制、差错控制等。

在TCP/IP中,本层的协议共有两个,一个是面向连接,稳定安全可靠的TCP传输协议,另一个则是非面向连接的,不提供可靠性,不提供流控和差错检查的UDP传输协议,两者各自有着自己的优点。

传输层之TCP传输协议

你可以把传输层理解为一条快递线路,而TCP呢,就是比较贵的一家快递公司,这家快递公司提供了优秀的安全与保密稳定机制,在双面建立连接之前,首先要进行三次握手。

ea770df2d3535cb2621cb450f3cfb335.png

当连接建立完成之后,则进行数据的传递,传递过程中,两个数据包还会进行序列号和checksum的校验。

9a378ded5ef28aa8cbd178ea2da20d88.png

c0d3247eb28c47f117081a755919b070.png

只有当这几个条件都满足后,TCP才会进行数据交互,所以TCP时非常可靠的一个传输协议。

当传输结束后,TCP还会进行四次挥手,以此来断开连接,所以TCP在速度上可能差强人意,但是在安全性上,是非常优越的。

650b84390d49aaf2249d077f3f54eb54.png

至于UDP协议,那就一个字,直接干!

b62a9e6727b3d7db1bc05e5362b96cad.png

观察UDP的报头格式,没有冗长的序列号,确认号,也没有对于流控和差错检测的指针,唯一的Checksum值,也对于不匹配的值直接丢弃,不会返回告诉源包,没有重传机制。

但存在即合理,UDP的优点就是快,对于一些对安全性要求不高的数据,直接使用UDP即可,比如说我们现在看到网络直播,一些音乐,小说,对于安全性和稳定性要求不高,偶尔卡顿或者丢包也影响不大,所以这是UDP能够存在的一个意义。

应用层——服务受众·襁褓宝宝

用襁褓宝宝来形容应用层,觉得在合适不过了,底层的所有动作,都是为了最上层的应用层服务的,在这一层,为用户的应用提供了访问网络的接口,比较知名的接口比如FTP协议的20/21端口,Tenet的23端口,及HTTP协议的80端口等等等等。

以上便是在TCP/IP协议中,每一层的分层定义,那小刚的数据在TCP/IP中,应该是如何进行传输的呢?

首先,应用层收到数据后,开始检查为哪一种数据,同时将数据,传递给传输层。

传输层收到数据后,检查该数据由TCP还是UDP传输,添加源目端口号,同时对数据进行分组,添加完包头后传入网络层。

网络层收到数据后,开始检查到达目的网络的ip地址,查询路由表进行传递,同时将添加ip包头,传递到下一层。

数据链路层收到数据包后,添加上帧头帧尾,其中关键点就在于源目MAC地址和检验和,当全部封装完毕后,再从相应的接口发送出去。

数据在网络上传输时,会根据网络环境,经过多次的拆解包的过程,而在此时,都是网络层发挥它的作用,不断的查询路由表,选择路线,而在这一层,如何选择最优路径,如何保障数据如何安全到达目的地,就是网络工程师的工作!

当数据到达目的网段后,开始解封装,链路层去掉帧头,同时根据路由表,寻找目的ip地址后发送,网络层收到数据后,开始对包头重点checksum属性,进行校验,校验一致,即通过本次检验,将数据传递给传输层。

传输层收到数据后,假如是TCP报文,此时也会对序列号进行检查,假如检验通过,即可以对多个分组按照约定好的顺序进行重组,将最后的数据排列完毕之后,传递给应用程序。

a914bec8285640d67369bb42a7bdf629.png

此时彼端的心仪,消息窗口终于震动了一下,嘴角微微一笑,疲倦的眼神中带了几分笑意,说道:“大忙人,你都没结婚,我怎么敢结婚啊。”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值