TCP/IP四层模型
应用层协议
包含HTTP (消息报文)SMTP DNS FTP协议
应用层不需要关心数据如何传输,只需要把消息交给传输层。
应用层工作在用户态,传输层及其以下工作在内核态
传输层协议
包括UDP和TCP(段)
TCP提供了可靠传输机制相比UDP多提供了比如流量控制、超时重传、拥塞控制的机制。
UDP相对简单只是直接把数据传输过去。
网络层
传输层专注于应用到应用的服务,而图中在路由器及其网络通信中的服务应该由网络层进行提供。
网络层常用协议IP(包)
IP地址相当于导航的功能。
网络接口层(帧)
导航虽然有了但是还需要真是的和物理层进行对接。使用MAC地址来寻找到具体的物理设备。本层代表性协议ARP来进行获取MAC地址。
从一个连接到显示网页期间过程
当内网中的主机通过代理服务器访问外部网络时,请求会先发送到代理服务器。代理服务器会根据NAT技术将请求转发到外部网络,并接收外部网络的响应。在这个过程中,代理服务器会负责进行DNS解析,将域名转换为对应的IP地址。
1.首先进行NAT转换将请求发给代理服务器
2.代理服务器进行DNS解析,将域名转化为http使用的ip地址。(类似问路过程)
DNS解析中可以使用两种方式:迭代方式和递归方式。本地有缓存都会先在缓存里找
迭代方式(Iterative):在迭代方式中,DNS解析器会向根域名服务器发送查询请求,根域名服务器会返回一个指向顶级域名服务器的地址。然后,DNS解析器会向顶级域名服务器发送查询请求,顶级域名服务器会返回一个指向权威域名服务器的地址。接着,DNS解析器会向权威域名服务器发送查询请求,权威域名服务器会返回所需的IP地址。这个过程中,DNS解析器需要不断地向不同的服务器发送查询请求,直到获取到所需的IP地址。
递归方式(Recursive):在递归方式中,DNS解析器会向本地域名服务器发送查询请求,本地域名服务器会负责处理整个解析过程。如果本地域名服务器没有所需的IP地址缓存,它会向根域名服务器发送查询请求。根域名服务器会返回一个指向顶级域名服务器的地址,然后本地域名服务器会向顶级域名服务器发送查询请求。顶级域名服务器会返回一个指向权威域名服务器的地址,最后本地域名服务器会向权威域名服务器发送查询请求并获取所需的IP地址。在递归方式中,DNS解析器只需要向本地域名服务器发送一次查询请求,剩下的查询过程由本地域名服务器完成。
应用层调用Socket库
Socket实际上就是一个用于跨网络通信的文件绑定了IP地址和端口号。来委托协议栈工作,分别是负责收发数据的 TCP 和 UDP 协议,这两个传输协议会接受应用层的委托执行收发数据的操作。
传输层经过TCP三次握手建立连接
三次握手目的保证双方都有正常进行收发的能力