客户端访问百度的整个过程_描述一下浏览器浏览百度http://www.baidu.com的时候,数据包在TCP/IP的各个层次的经历过程及使用到的协议?...

首先祭上 TCP/IP 栈镇楼。

好的,现在开始回答问题,首先感谢你加上了 TCP/IP 的关键字,要不就变成了一个可能超出知乎字数限制的故事。

首先给定一个前提,在网络传输中数据都是以数据帧的形式传递。将 4 层应用层的数据变成 1 层网络接口层的数据帧的过程叫做封装,反之相反的过程,就叫做解封装。了解了数据帧是怎么来的,就能了解 TCP/IP 的传输过程。

从应用层开始说起

在这层,由于使用的是浏览器,主要用到的协议是 HTTP。电脑上的客户端或者在服务器上提供的服务应用会在这层产生应用数据,然后对数据进行压缩,加密等操作,下面就是一个 http 的例子。

接着,数据向上层传递给传输层。

传输层

这层用到的协议主要是 TCP 协议,在应用的数据基础上添加头部,形成数据段。该层的主要目的就是,标识上层的应用程序,建立端到端的*可靠*连接,进行应用程序寻址,差错控制,流量控制等等。

添加的头部中,比较重要的就是源端口,目的端口,SYN,和 ACK。总之,需要明白的是,通过 TCP 就可以建立一个端到端的稳定可靠的连接(至于为什么,你可以再去提个问)。

同样给你截个图:

数据接着传递到了网络层。

网络层

这层主要的协议即使 IPV4/V6 了,为数据段添加头部变成数据包。工作在这层的设备就是我们熟悉的路由器了。在这层主要的字段就是源IP,目的IP,协议字段了(和上层的作用一样,用于标识上层使用的协议,比如常见 ICMP 是1,TCP 是 6,OSPF 是89.)

网络接口层(物理层/链路层)

接着数据会来到链路层,在这层主要用到的协议是 Ethernet2. 同样为数据包添加了头部,主要的字段是源MAC,目的MAC,类型。

但这里有个小故事,与上两层不同,Ethernet2 在开始时是一个私有协议,而私有协议就意味着对于很多的大厂商比如 Cisco 是无法使用的,后来才变成了公有协议。

之后为了通用化,IEEE 发明了一个新标准,就是将数据链路层拆分为两层 MAC 子层和 LLC 子层。

MAC 子层用于对应物理的传输介质(双绞线,无线,光纤),LLC 用于进行控制,和网络层打交道。结构如下:

到了现在,Ethernet2 和 802.X 的协议是一种共存的状态。

好了,数据到了物理层,这就会变成 1010 的高低电平在实际线缆上传输。

这就是数据在 TCP/IP 栈的传递过程了。

除此之外,在其中可能还伴随 DNS, ARP 等等协议,这里就不提了,字数差不多了,我该去吃饭了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值