当我们要访问一个网站时, 我们需要在浏览器中输入这个网站的域名才能进入。在这个过程中,计算机自带的DNS服务将域名解析,得出访问对象的IP地址。客户端程序再通过HTTP协议向对方的服务器发送特殊格式的报文(http报文),但是并不会直接向服务器发送。客户端这部分,我们把它叫做应用层,对应HTTP协议。
在这之前,计算机的传输层与网络层(也可以叫网络互连层)会分别对http报文进行处理。http报文会被传输层的TCP协议封装。TCP协议将HTTP报文分段,并打上TCP的首部信息,这些被分段的报文每一个都会有标记序号和端口号。网络层对应的则是IP协议,它会在报文的前端打上MAC地址将其转发给下一层。
这样一来发送往网络的通信请求全部都齐全了。对方的服务器也会有这样四个结构,它们会去除对应的首部信息。最后,服务器就会接收到真正的HTTP请求。
HTTP协议HTTP协议不难理解。全球计算机需要有一种共同的语言,HTTP协议便是这种言。它的作用是使同一网络的计算机的进行信息交换,它的报文有特殊的格式。(格式以后在说)
解析域名的DNS服务DNS服务是和HTTP协议位于应用层之间的协议,它提供域名到IP地址的解析服务。我们想要访问一个网站时,一般是搜索网站域名,比如,www.baidu.com、www.csdn.com。
域名的诞生在我看来完全是为了人类的记忆习惯,访问网站的话IP地址是可以直接做到的。DNS服务就将域名解析成不符合人类记忆和理解习惯的IP地址给计算机使用。
DNS还可以逆向从IP地址反查域名的服务器。
TCP/IP协议TCP协议TCP协议,IP协议还有一会要说到的DNS服务与上面的HTTP协议密切相关,它们都是为了能够让对方能够正确地接收到HTTP请求而诞生的。
TCP协议主要确保数据传输的可靠性。在整个互联网中,数据传输的状况是复杂的。为了确保传输的数据不在互联网中丢失,TCP协议诞生了。
TCP协议属于传输层在应用层之下,网络层之上,提供可靠的字节流服务。所谓的字节流服务是指,为了方便传输,将大段数据分割成报文段为单位的数据包进行管理。“可靠的“的是指,TCP协议能够将数据准确可靠的传给对方。数据分段化可以让大数据更好的传输,“可靠的”是说TCP协议确实很可靠。
TCP协议为了确保数据送达的手段:三次握手。
下图是详细过程:
发送端:发送SYN数据包
接收端:收到,回复一个SYN/ACK数据包给发送端
发送端:收到,再次发送ACK数据包
三次握手结束。
在这个过程中,有三次数据传输,三次数据接收。若其中某个阶段停止,TCP协议会再次按流程重新开始发送数据包。
TCP协议正是这样保证了客户端与服务器之间连接的可靠性。
IP议协IP协议(internet protocol),又称互联网协议,这是英文直译出来的。所以IP并不是IP地址,而是IP协议的英文缩写。以后提到IP就是指IP协议,不要搞混成IP地址。
IP协议主要负责数据包的传输。在TCP对HTTP协议进行封装后,IP协议会将其进行处理使其能够正确送达到指定目标(打上IP地址和MAC地址)。指定目标的地址在客户端发送HTTP请求时,已经由DNS服务解析得出了目标IP地址 。但是仅仅知道IP地址还不够,在这个传输过程中,会通过非常多的路由器,网关。我们的数据包不可以随意的发送,必须要有指定路线。于是,MAC地址就起到作用了(APR协议解析出MAC地址)。MAC地址说每个路由器出场时就自带的,是唯一的,不可更改的。IP协议会把路线定好,再把要通过的路由器的MAC地址打在数据包上。
这样一来数据传输的路线就确定好了。
HTTP协议与各种协议之间如何运作?



