互相扒皮——服务器和客户端
数据包到了之后,看MAC是否符合,符合就收起来,
扒开IP的头,发现IP地址符合,根据IP头中的协议项,知道上层是TCP
扒开TCP的头,里面有序列号,需要看一看这个是不是我想要的,如果是就放入缓存中返回一个ACK,如果不是就丢弃 。TCP头部还有端口号,HTTP的服务器正在监听这个端口号 。
于是服务器就知道HTTP进程要这个包,于是就把这个包发给HTTP进程 。
服务器的HTTP进程看到,原来这个请求是要访问一个页面,于是就把网页封装在HTTP相应报文里 。
之后相应报文也要穿上TCP IP MAC头部,不过这次是源地址时服务器的IP地址,目的地址是客户端的IP地址 。
现在,数据终于通过网卡离开了计算机,进入到局域网,通过局域网中的设备,集线器、交换机和路由器等,数据会进入到互联网,最终到达目标服务器 。
接着,服务器就会先取下数据包的 MAC 头部,查看是否匹配自己 MAC 地址 。然后继续取下数据包的 IP 头,数据包中的目标 IP 地址和自己的 IP 地址匹配,再根据 IP 头中协议项,知道自己上层是 TCP 协议 。
之后,还要继续取下数据包 TCP 的头 。完成一系列的顺序校验和状态变更后,TCP 头部里面还有端口号,此时我们的 HTTP 的 server 正在监听这个端口号,就把数据包再发给对应的 HTTP 进程 。
HTTP 进程从服务器中拿到对应的资源(html 文件),再交给操作系统对数据进行处理 。然后再重复上面的过程,层层携带 TCP、IP、MAC 头部 。接下来数据从网卡出去,到达客户端,再重复刚才的过程拿到相应数据 。客户端拿到对应的 HTML 资源,浏览器就可以开始解析渲染了,这步操作完成后,用户最终就能通过浏览器看到相应的页面 。
画了两幅图,来描述上述过程,第一幅是网络协议各层之间封装与拆封数据的过程,如下所示
TCP_IP协议栈:

文章插图
下面的第二幅图,是描述客户端与服务器之间用网络协议连接通信的过程,如下所示

文章插图
此时客户端和服务端之间通过 TCP 协议维护了一个连接状态,如果客户端需要关闭网络,那么会进行四次挥手,两边的网络传输过程至此完成 。
【网络中IP数据包是如何进行远程传输定位的】
推荐阅读
- 使用 Python 进行网络爬虫——从0构建简单爬虫
- 重生的 SDN?云原生网络功能介绍
- 使用树莓派安装OpenVPN,在外部访问家庭内部网络
- 高中女孩早恋家长正确处理 高中女生早恋家长应该怎样处理
- 外蒙古正式脱离中国,成为独立主权国家是在什么时期 当年外蒙古是怎么独立出去的
- 怎样让初中孩子爱上学习
- 初中女孩早恋家长怎么办如何正确处理
- 孩子不想上学可以办休学吗高中 孩子不想上学可以办休学吗
- 怎样处理初中儿子早恋 儿子初中早恋父母该怎么处理
- 高中孩子浮躁怎么办,高中孩子浮躁家长怎么办
