网络传输的基本流程
模拟例子:

网络传输流程图
1.同一个网段内的两台主机进行文件传输

2.跨网段的主机的文件传输.
数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.

数据包封装和分用
不同的协议层对数据包有不同的称谓:
   在传输层叫做段(segment),
   在网络层叫做数据报(datagram),
   在链路层叫做帧(frame).

应用层数据通过协议栈发到网络上时,
每层协议都要加上一个数据首部(header),称为封装(Encapsulation).

首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.

数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 
根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理.
1
2
3
4
5
6
7
8
9
10
11
12
数据的封装过程:

数据的分用过程:

访问一个浏览器过程
在浏览器中输入 http://www.baidu.com/ 后执行的全部过程。

现在假设如果我们在客户端浏览器中输入 http://www.baidu.com, 
而 baidu.com 为要访问的服务器,
下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作:

1)客户端浏览器通过 DNS 解析到 www.baidu.com 的 IP地址220.181.27.48,
       通过这个 IP地址 找到 客户端到服务器 的路径。
       客户端浏览器 发起一个HTTP会话到220.161.27.48,
       然后通过TCP进行封装数据包,输入到网络层。
    
    2)在 客户端的传输层,把 HTTP会话请求 分成报文段,添加源端口和目的端口,
       如 服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,
       与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。
       然后使用IP层的IP地址查找目的端。
    
    3)客户端的网络层不用关系应用层或者传输层的东西,
       主要做的是 通过查找路由表确定如何到达服务器,期间可能经过多个路由器,
       这些都是由路由器来完成的工作,不作过多的描述,
       无非就是通过查找路由表决定通过那个路径到达服务器。
    
    4)客户端的链路层,包通过链路层发送到路由器,
       通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,
       如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,
       然后发送IP数据包到达服务器的地址。

eg2:

PC-A向PC-B传输消息,首先是用户打开消息应用例如QQ,然后给小黑发消息(你吃了吗),

1)在应用层生成数据”你吃了吗(小黑IP)“,然后数据传入表示层节点-表示层,

2)在表示层将数据进行转换(针对计算机系统编码如IBM主机使用EBCDIC编码,而大部分PC机使用的是ASCII码等等的不同)加密,压缩-会话层

3)在会话层将这个qq消息的回话区分出来,然后将会话内容以及相关信息传到下一层-网络层

4)在网络层将会话内容和相关信息(小黑IP)封入数据包-运输层

5)在运输层需要在数据包中插入写信人IP,跟快递一样写明寄件人-数据链路层

6)在数据链路层(对应网卡和相应驱动程序)将小黑IP对应到他的硬件地址(MAC地址网络适配器唯一标识)-物理层

7)在物理层将数据包由帧转换为电信号/光信号,然后通过光纤传输,中途跋山涉水,不断的转发到达目的地,中间万一丢东西了咋办呢,所以这个节点加入了校验值,万一目的地校验后出现了丢失那么重新发送一次,-光纤。

8)剩余的就是和上述相反的过程,由PC-B接收,然后小黑回复(我没喝水)。

微信发出消息后,消息走过哪些路相关推荐

  1. android接收消息后提示音,Android仿微信新消息提示音

    怕有些人不知道怎么进入微信的新消息提示音功能,我这里说下操作步骤: 打开微信----我---设置---新消息提醒---新消息提示音. 经过以上的步骤就进入了这样的界面 具体实现的步骤. 难点之一:获取 ...

  2. windows 组播收不到消息_只需2步,轻松解决登录微信电脑版后,手机收不到消息提醒的问题...

    因为可以用手机号搜索的原因,我们在和客户沟通时,往往会通过电话号码添加对方的微信,便于收发文件资料,久而久之,就养成了通过微信传输文件的习惯. 但有一个一直困扰我们的问题,登录微信电脑版后,手机端往往 ...

  3. 4g状态显示微信未连接服务器,我手机4G网是一直开着的,为什么登录微信确显示未连网!而且微信消息不提醒,但是打开后消息就出来了...

    我手机4G网是一直开着的,为什么登录微信确显示未连网!而且微信消息不提醒,但是打开后消息就出来了以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我 ...

  4. 实现微信公众号发送消息给指定用户

    一.前言 在实际项目开发中,需要实现消息中心向关注微信公众号的指定用户发送消息通知,在翻阅了网上很多资料及微信官方开发文档后,最终顺利完成功能开发,但是其中走过的路艰辛且曲折,因此特将开发过程中踩过的 ...

  5. 微信为什么不丢消息?

    上一章和大家分享了<http如何像tcp一样实时的收消息?>, 本章来聊一聊即时通讯(Instant Messaging,后简称im)消息的可靠投递. 一.报文类型 im的客户端与服务器通 ...

  6. 基于tp5 微信公众号模板消息

    首先引入微信sdk,然后配置appid,appsecret,然后实例化类 发送模板消息前期准备 先通过appid appsecret获取code ,然后通过code获取access_token 通过a ...

  7. java消息平台_Java微信公众平台之消息管理

    Java微信公众平台开发之消息管理,一定要先看下官方文档 微信消息管理分为接收普通消息.接收事件推送.发送消息(被动回复).客服消息.群发消息.模板消息这几部分 一.接收普通消息 当普通微信用户向公众 ...

  8. 微信公众号教程(3)微信公众平台群发消息

    微信公众平台最常用到的就是群发消息,这种一对多.几乎百分百到达的传播方式,取代了短信群发,并且具有多媒体形态,还可以直接引导转化.因此编辑一条好的内容,挑选恰当的时候发送,既可以给用户带来有价值的信息 ...

  9. 微信公众号 模板消息开发

    微信公众号 模板消息开发 1. 添加模板 1)登录公众号 2)添加插件 登录之后,在左边栏的功能里面点击[添加功能插件]->[模板消息] 进入后,然后开始审核,大概要1-3天时间.下面为我们正在 ...

  10. 微信HOOK 从撤回消息深度剖析微信的一些设计理念

    很久没有发博文了,也是因为最近没有什么值得讲的,近日有了一些所得,便发出来和大家分享 首先是关于微信协议,以往的协议虽有缺陷,但总体还是可以做一些项目业务的,自微信8.0以来,协议几乎处于不可用状态, ...

最新文章

  1. 物联网趋势下的边缘计算发展解析
  2. 通过Nginx,Tomcat访问日志(access log)记录请求耗时
  3. Android应用程序模块:应用、任务、进程和线程
  4. 凉凉夜色为我思念成河
  5. 特定视图呈现时发生的事件顺序
  6. Android插件化开发基础之Java反射机制研究
  7. 里能嵌jquery吗_白芸豆里的淀粉阻断成分,能帮助减肥是真的吗?
  8. qt5.9.0调试如何查看变量的值_深入了解 Java 调试
  9. ccpc中国大学生首届程序设计竞赛
  10. Thinapp的昨天,今天和明天
  11. Mybatis JPA-集成方案+代码解析
  12. 设置背景颜色html,css怎么设置背景颜色?
  13. 捡到的苹果手机怎么解id锁_苹果手机软解和硬解的区别
  14. 1.23山师训练赛补题
  15. Android的各版本间的区别总结
  16. ElementUi中轮播图走马灯如何实现添加图片
  17. 2019电赛总结(序)
  18. wampserver mysql忘记密码_WampServer修改MySQL密码
  19. java怎么把数组清空_如何在JavaScript中清空数组?
  20. 苹果官方付费升级内存_为了玩史上最贵的付费手游,不仅得割肾还要净身!

热门文章

  1. 数据结构查找-7-4 集合相似度 (25 分)
  2. #205-[STL set] 灰色头像
  3. 零伽壹|多地印发涵盖区块链技术的发展实施意见
  4. 【飞桨PaddleSpeech语音技术课程】— 语音识别-Deepspeech2
  5. Python逻辑运算符有哪些?
  6. 小爱同学UWP上架Win10应用商店啦快下载使用吧
  7. 近世代数:循环群与变换群
  8. 找回放开那三国服务器,常年服务器第一《放开那三国》最强开局
  9. 含雄奇于淡远之中[转自唐浩明著曾国藩]
  10. 黑马Redis视频教程实战篇(六)