网络分层
OSI7层模型
应用层->表示层->会话层->传输层->网络层->数据链路层->物理层
TCP5层模型
应用层->传输层->网络层->数据链路层->物理层 在tcp模型中,把表示层->会话层都划到应用层了 应用层协议:http,ftp,ssh,dns等 传输层协议:tcp,udp等 网络层:ipv4,ipv6,icmp等
五层模型传输数据的过程
在进行公网访问时,通常是通过域名访问,发送请求时,首先要在浏览器里找是否有你要访问的域名的缓存,
如果没有的话,要通过dns进行域名解析(这个过程也是一个请求),拿到服务端的ip地址。
拿到服务器的ip地址的过程:
发起dns请求,因为dns请求是基于udp协议的,所以来到传输层后,请求报文要加上udp的请求头,再往下来到网络层,报文加上ip协议的请求头,来到数据链路层,通过寻址找到自己的mac头,并且通过arp协议把要交给下一个机器的mac地址也加上,再通过物理层把报文传输到路由器(3层,物理层,数据链路层,网络层),向上层层解析,如果请求的域名是放到运营商的dns服务器上的话,会最后把数据传到运营商的dns的服务器,在这里找到请求的域名,再层层原路返回到自己的机器上面。
拿到域名后向服务器发送请求:
http协议,向下来到传输层(http协议是基于tcp协议的),加上tcp的请求头,接着来到网络层,加上ip协议的请求头,再来到数据链路层,拿到自己的mac头,通过arp协议,把要给服务器的mac头加上,来到物理层,通过网线把数据传出去。
服务器拿到请求后,向上层层解析,把请求拼完整,知道客户端要什么东西后,同样的会发送响应报文给客户端,和请求方式一样。