导读:在日常开发中,不同服务器间通信对我而言像是个黑盒子,所以笔者就对这方面进行了些学习和总结。通过学习这方面的知识也有助于排查网络问题。本文从浏览器输入URL为起点简要讨论网络服务器间通信的整个过程。分为以下三点进行:
一、总图(顺序右->左)
二、名词解释
三、流程简述
1.以浏览器发送HTTP请求为例子,浏览器先解析URL获取域名,然后委托操作系统向DNS服务器查询Web服务器的ip地址并生成HTTP请求消息。由于浏览器不具有发送请求功能,所以浏览器通过调用Socket库组件来实现。
2.Socket库组件收到应用程序调用的操作后会委托协议栈的TCP模块或UDP模块进行处理。这里以TCP协议为例,两个服务器间进行网络通信需要经历套接字创建、三次握手、数据收发、四次挥手等过程。这些都需要应用程序组合调用Socket库程序组件,程序组件委托协议栈。进行服务器间通信应答接发网络包所完成。以下内容中我们默认已经建立好连接,并以TCP收发应用程序数据的过程继续展开讨论。
3.协议栈TCP模块会将应用程序传过来的数据切成多个数据块并给每个数据块前加上TCP头部,然后委托给IP模块。
4.IP模块给数据加上IP头和MAC头形成网络包,并调用网卡驱动程序进行处理。
5.网卡驱动程序控制网卡对网络包进行处理。
6.网卡将网络包转为电信号或者光信号发送给交换机。
7.交换机的作用是根据地址表(交换机内部有一张MAC地址与网线端口的对应表)进行包的转发操作。首先内部PHY(MAU)模块将网线中的信号转为通用信号,MAC模块再将通用信号转为数字信息后进行FCS校验错误并存到缓冲区内存中。最后根据MAC地址表将包转发到对应的端口。
8.网络包经过一个或多个交换机之后到达路由器,路由器的作用是接收网络包然后查询转发目标,再由相应端口将网络包出去。大致分为两个模块,端口模块负责包接发,包转发模块负责判断包转发的目的地。(交换机和路由器的区别:1.在于路由器的端口具有MAC地址和IP地址,交换机只是单纯把包转发出去,而路由器以实际接受方和发送方身份来收发网络包。2.交换机基于以太网设计,路由器基于IP设计)
9.接入网技术有很多这里我们用FTTH(基于光纤接入网技术)为例分析。FTTH指从运营商的OLT机房把光纤接到用户的家中的ONU。用户端接入路由器和运营商FTTH专用BAS通过接入网技术连接起来。网络包传输流程:用户端ONU将电信号转为光信号经过分光器后发送给OLT,OLT将其转为电号再发送给FTTH专用BAS。
10.BAS将接收到网络包做处理(去掉PPPoE头部和MAC地址)后通过隧道机制将PPP包发到隧道另外一边的端口网络运营商的路由器(称为POP接入点),网络包就从此入口进入互联网。
11.互联网是由多个运营商网络相互连接组成的。运营商网络则由多个路由器连接而成,POP路由器(根据接入网类型分为多种类型的路由器)与用户接入网连接,NOC(网络连接中心)连接多个POP,多个运营商通过IX(互联网交换中心)相互连接。路由器根据路由表及网络包的IP头部对网络包进行转发,最终到达目标服务器。
12.在达到目标服务器前需要通过防火墙检验网络包,通过在防火墙设置规则判断到达服务器的包是否允许通过,如果判断结果为阻止则该包会被丢弃。
13.最后,服务器进行具体处理并响应回客户端。
总结:流程为客户端浏览器-Socket库-协议栈-多个交换机(集线器)--多个路由器--多种接入网技术(BAS、隧道等)--运营商接入网路由器(POP)--互联网--目标服务器
感谢您的阅读,如果喜欢本文欢迎关注和转发,本头条号将持续分享IT技术知识。对于文章内容有其他想法或意见建议等,欢迎提出共同讨论共同进步。