网络-应用层到物理层到服务器的流程
ARP协议(Address Resolution Protocol):在局域网中,当主机或其它三层网络设备有数据要发送给另一台主机或三层网络设备时,需要知道对方的网络层地址(即IP地址)。但是仅有IP地址是不够的,因为IP报文必须封装成帧才能通过物理网络发送,因此发送方还需要知道接收方的物理地址(即MAC地址),这就需要一个通过IP地址获取物理地址的协议,以完成从IP地址到MAC地址的映射。地址解析协议ARP即可实现将IP地址解析为MAC地址
NAT协议(Network Address Translation):NAT协议是将IP数据报头中的IP地址转换为另外一个IP地址的过程, 主要用于实现私有网络访问公有网络的功能。这种通过使用少量的IP地址代表较多的私有IP地址的方式,将有助于减少IP地址空间的枯竭
数据传输过程中的封装和解封过程:
OSI七层/四层网络对应的协议:
本地电脑访问远程服务器,数据包封装和解析的流程:
- 【本地】通过ARP协议去获取目标服务器的MAC地址,网关发现目标IP非同一个网段,返回网关的MAC
- 【本地】将本地端口、目标端口、本地IP、目标IP封装到包中
- 【本地】链路层再外面再封装网关的MAC地址、本地的MAC地址
- 【网关】出口网关收到请求后,使用NAT协议,将发出去的包的源MAC、源IP改为自己的,目标MAC改为服务器的,目标IP不变
- 【服务器】服务器收到请求后,将数据包解析,根据目标端口号解析给对应的应用程序
- 【网关】网关收到远程服务器返回的响应后,修改数据包(根据NAT协议表),将目标IP、目标MAC改为本地电脑的,源MAC改为网关的
- 【本地】收到响应后,逆封装过程,一层一层解析,在展示层将数据流转换为目标文件,如Html/CSS
什么是单工、半双工、全双工通信?
-
单工:信息只能单向传送;
-
半双工:信息能双向传送但不能同时双向传送;
-
全双工:信息能够同时双向传送。
-
单工模式下,通信是单向的,即数据流向一个方向。设备只能发送数据而不能接收数据,或者可以接收数据但不能发送数据。如收音机。
-
半双工允许双向通信,但不能同时进行,信号在介质上双向传播,但一次只能向一个方向传播,由于信号仅沿一个方向传播,因此设备可以在给定时间发送或接收数据,设置为半双工的网卡在发送数据时无法接收数据。如对讲机。
-
全双工允许同时在两个方向上进行通信,它将可用通道分为两部分,一部分用于发送数据,另一部分用于接收数据。由于发送和接收数据有单独的路径,因此设备可以在给定时间同时执行这两项任务。如双向高速路、打电话。
TCP协议工作模式
TCP是全双工的。可以从TCP选择重传中看出来,在每一时刻是同时存在收发端发送的帧和ACK信号的。但是从三次握手看起来又像是半双工,但是TCP三次握手不能代表平时的数据传输,三次握手的目的是为了确立连接建立,而在实际TCP传输过程中大多情况是收发端同时发送数据的。
HTTP协议工作模式
- http1.0:单工。因为是短连接,客户端发起请求之后,服务端处理完请求并收到客户端的响应后即断开连接
- http1.1:半双工。请求应答模型,虽然引入管道传输,在请求的响应回来之前,可发送多个http请求,不用等待回复,但是也由于是请求-应答模型,对于一次请求-应答的事务来说,服务端回复需要按客户端发送的顺序返回响应,客户端在等待同一个事务回复的过程中是没办法做其他事情的。
- http2.0:全双工,引入stream,多个 Stream 复用一条 TCP 连接,客户端和服务器双方都可以建立 Stream,允许服务端主动向客户端推送数据。
WebSocket是全双工通信协议
参考:
-
NAT协议:https://www.ctyun.cn/developer/article/358337908486287
-
ARP协议:https://info.support.huawei.com/info-finder/encyclopedia/zh/ARP.html
-
单工/全双工通信:https://juejin.cn/post/7127455765534605349;https://xie.infoq.cn/article/95f80659760d8dd230db7b548