网络协议通信流程

Tuesday, June 25, 2019

应用层

  1. 首先,我们在浏览器输入链接,比如 www.baidu.com 这是一个URL。浏览器只知道名字,要找到具体地点,所以通过DNS去查找,得到IP地址。(还有HTTPDNS也可以查找)

  2. 拿到ip地址后,浏览器开始打包请求,使用HTTP协议(或者HTPPS加密请求),HTTP协议包含请求头,请求信息。

传输层

  • 浏览器打包完之后,会传到下一层,传输层。传输层有两种协议,TCP和UDP。对于大部分网页请求来说,用的是TCP协议,这是一种面向连接协议,TCP会保证这个包到达目的地,如果不能到达,就重新发送,直到到达。

  • TCP协议里面有两个端口,一个是浏览器监听的端口,一个是电商服务器监听的端口,操作系统会通过端口来判断,得到的包传给哪个进程。

网络层

  • 传输层打包完毕后,浏览器会将包传给操作系统的网络层。网络层的协议是IP协议。
  • IP协议里面会有源IP地址,浏览器所在的机器的IP地址和目标IP地址。
  • 操作系统会判断IP地址是局域网的还是外网的
  • 操作系统会将IP地址发给网关(比如大部分局域网的默认网关192.168.1.1),操作系统会通过ARP协议找到网关的MAC地址

MAC层(数据链路层)

  • 操作系统将IP包传给下一层,也就是MAC层,由网卡将包发出去,这里面包含了MAC地址,因而可以发送到网关。

  • 网关往往是一个路由器,到某个IP地址该怎么走,这个叫作路由表

  • 路由器为了达到指定的IP地址,会不断的去找到下一个路由器,这种沟通协议叫路由协议,常用的是OSPF和BGP,类似下图这么一个流程 file

  • 走到最后一个路由器的时候,它会知道这个网络包要去的地方,在这个路由器的局域网内查找后,目标服务器会回复一个MAC地址,网络包就会通过这个MAC地址找到目标服务器了。

  • 后面就会重复前面这部分的流程了,只不过是反着的。网卡确认MAC地址后,发送给操作系统的网络层,系统确认IP无误后,取下IP头,里面封装了TCP协议,再交给传输层,即TCP层。

  • 在TCP层里,对于收到的每个包,都会回复过去收到了。

  • 如果一段时间还是没收到回复,发送端的TCP层会重新发送这个包。这个绝非是你浏览器点刷新或者重复点击某个请求链接。

  • 网络包到达目标服务器的TCP层后,会通过端口,找到要处理这个信息的进程,比如Tomcat

  • Tomcat只是负责统筹处理这个请求,往往是通过RPC调用

  • 处理完毕后,会回复一个HTTP(HTTPS)包

计算机网络

消息队列作用

Linux常用命令