网络信息的传输

     学习了OSI七层模型之后,对网络消息是如何传输的还是有些疑惑。于是找到了一本书《网络是怎样连接的》—作者:户根勤。这本书详细讲述了网络消息发送和接收的过程。有兴趣的可以看一看,真的很受益!
     下面我就自己的理解,以“从浏览器输入网址到浏览器页面出现内容的过程”为例,简单的介绍一下网络的传输过程。

     消息发送阶段:

     第一步: 输入目标网址URL(URL:统一资源定位器)。浏览器(应用程序)对URL解析,进行拆分。
     第二步: 浏览器调用操作系统的Socket库(以固定的格式消息)并委托系统协议栈,通过网卡向DNS(域名解析器)发送请求消息,查询目标网址的IP。然后DNS返回消息(包含IP),通过协议栈写到内存(内存地址形式)中。然后浏览器(应用程序)从内存中找到相应的<内存地址>,也就获得了网址对应的IP。
     第三步:对 URL 进行解析之后, 浏览器确定了 Web 服务器和文件名, 接下来就是根据这些信息来生成 HTTP 消息体。
     第四步:HTTP消息体经过TCP协议栈的封装,变成固定格式的包含TCP头部的包。
     第五步:TCP处理的包经IP模块处理,变成包含MAC头部和IP头部的包。
    第六步:信息包经过网卡驱动和网卡,给包再添加三个控制数据。同时这里用到了ARP(地址解析协议)协议。
     第七步:包(数字信息)被网卡变为电信号,进入网线,经集线器,交换机,路由器,然后经过调制解调器(猫)转换信号(或是电信号或是光信号)进入网络。

    消息接收阶段:可以看作是消息发送的逆过程

     第一步:电信号或者光信号从网线进入调制解调器(猫),转换为电信号。
     第二步:网卡的MAC模块将网络包从信号还原为数字信息,校验FCS并存入缓存区。
     第三步:网卡驱动会根据MAC头部判断协议类型,并交包交给相应的协议栈。
     第四步: 协议栈的IP模块会检查IP头部:(1)判断是不是发给自己的;(2)判断网络包是否经过拆分;(3)将包转交给TCP模块或者UDP模块。
    第五步:收到数据包时,TCP模块会(1)根据收到的包的发送方的IP地址、发送方端口号、接收方IP地址、接收方端口号找到相对应的套接字;(2)将数据块拼接起来并保存在接收缓存区中;(3)向客户端返回ACK。
     第六步:web服务器程序解释请求消息并做出响应。
     第七步:浏览器(应用程序)接收消息并解析,显示网页内容。

    下面的图片介绍的很详细:

这里写图片描述
这里写图片描述

    刚接触网络,难免有不正确地方,欢迎大家指正,感谢您的阅读!
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值