网络数据发送的过程详解

这篇博客是我最近研究网络传输的心得,在这里我就来个总结,有错误的地方希望好心人能帮我纠正下,感谢!

要想弄懂网络数据发送就需要知道哦OSI模型:

OSI分为七层:1、物理层,2、数据链路层,3、网络层,4、传输层,5、会话层,6、表示层,7、应用层

我们在后面慢慢介绍每个层相应的功能,这里我们分数据发送端和数据接收端。

1、应用层:这里我不讨论5、6层。首先发送端数据的产生是在应用层,产生数据后不是马上发送,而是有一个缓存区存在,有一定的数据后才发送,这样节约资源嘛,在缓存区数据够了后就将这个数据打包发给传输层。

2、传输层:传输层我只说我们常用的TCP和UDP协议,传输层得到数据包后会根据要求来选择协议。这里我就不讲这两个协议详细内容了,我有写了相应的博客详解,如果数据需要TCP协议发送,由于TCP是面向字节流的,他不会去搞清楚你发送了几次,或者发送了多少,他就像一条河流一样,你有一桶水他也是放在河里,有一杯也是一样,就是你这个进程的所有的数据都放在这个河里,官方解释就是不保存原先的数据边界,但是IP协议是面向数据报的,就是一段一段的,那么TCP你这不行啊,于是TCP就需要将数据流分成段(添一个TCP包头)然后才交给IP即网络层,UDP则收到了数据报打个包,也就是添一个UDP包头交给IP层,因为IP层才是负责发送的。

3、网络层:这一层就是我们常见到的IP地址一层了,他要做的就是将数据发送给目标设备,我们这里只讲流程具体细节看另外的每个相应的博客,IP层涉及到一个数据段的分段和重组的问题。为什么要分段和重组,每个网络传输会经过很多种的数据链路层,包括以太网、FDDI等的,每个数据链路层都有一个最大传输单元叫MTU,解释就是我这个链路层只能多大的数据段通过大于这个值得不好意思,不能过,于是IP层没办法太大就分小点吧,这就是分段,就是吧数据段分成一些小段来通过数据链路层,我来讲讲分段机制的实现,分段没问题,但是我们需要保存下信息嘛,总不能分了以后组不起来了吧,为了能够重组起来,IP包头有一个字段叫偏移量和一个字段叫标志,标志好理解,就是你们虽然分成多个段了但是每个段的标志都是一样的,偏移量就是我到底这段比原来偏移了多少字节,这里要注意的是偏移了是8的倍数,因为包头标志位占了三个字节,本来16个字节,但是有三个表示不了,于是这个数就只能是8的倍数了。那么现在分段了就给链路层吧。链路层怎么实现就不追究了,数据链路层会有一个14字节的包头,MVC包头。

4、现在这个数据就发给了目标设备的数据链路层,数据链路层需要解析啊,于是他就打开了MVC包头,14个字节前12个作用不去了解,后两个字节,这两个字节转化为short int型的值如果是0x0800那么就表明这个报文是ip报文,那就代表使我们要的数据,就把这个报文交给IP层,网络层收到了这个报文同样来解析IP包头,这里需要注意重组问题,IP层根据收到的报文缓存这,等分成小段的报文齐了就把它们组合起来然后变成了大段的报文了就查看IP包头的协议字段,取值如果等于6那就是TCP协议,于是就给TCP,如果等于17那就给UDP协议,相应的协议收到报文后,就解析下,发给这个目标端口,进程就可以收到数据了。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值