linux----输入url会发生什么

输入url,例如http://www.baidu.com其中http为协议,www.baidu.com为网络地址。

1.应用层DNS域名解

客户端先检查本地etc/hosts里面是否有对应的ip地址,若没有就去本机的域名服务器上找,若有则则返回响应的ip地址,若没有找到,就上级域名器级请求DNS服务器,直到找到根。

 DNS中递归查询和迭代查询的区别

   1).递归查询:一般客户机和服务器之间属于递归查询,即当客户机向DNS服务器发送请求之后,若服务器本身不能解决,则会想另外的DNS服务器发出查询请求,结果转交给客户机

  2).迭代查询(反复查询):一般DNS服务器之间属于迭代查询。如DNS2不能相应DNS1的请求,写会将DNS3的ip给DNS2,以便向DNS3发起请求。

2.应用层客户端发送http请求

    http包括请求首行:请求的方法(get、post)、目标url、版本。

    头部:一些属性:cookie,referer,host等

    正文:请求内容(get没有正文,会在首行中包含)

3.传输层tcp传输报文

传输层是端到端的传输

传输层的tcp协议为传输报文提供了可靠的字节流服务,它方便传输,将大块的数据分割成以报文字段为单位的数据包进行管理,并为他们编号。方便服务器接收时能准确的还原报文信息,tcp的连接管理机制是通过三次握手和四次挥手、

为了保证数据的可靠传输:确认应答,超时重传

提高效率:我们说确认应答就是每次发送一个数据段,都要给一个ACK应答,收到后在发送数据。这么做性能较差。

因此引入:1.滑动窗口:一次可发送多条数据

                       (1)窗口大小:无需等待确认应答而继续发送数据的最大值。

                       (2)快重传:假若一条数据丢失,那么对端重复的回复同一个消息,我们接受到连续3次接受到同样的消息,就将该消息重新发送

                 2.流量控制:由于发送端发送数据太快,接收端缓冲区被打满,导致数据丢失,因此,每次接收端回复确认信号的时候附带上自己的窗口大小

                  3.拥塞控制:由于网络导致的数据丢失。因此引入“慢启动”开始设置拥塞窗口为1,以线性的方式增长,每次是取拥塞窗口和接收端反馈的窗口大小的较小值作为实际发送的窗口。

                  4.延迟应答:接收端处理数据较快,因此会等一会,尽可能使窗口变大,再去回去

                 5.捎带应答:将确认信号和回复的消息放在一起进行发送

4网络层协议

将tcp报文字段封装成ip数据报。通过路由器的路由和转发能够确定数据通过哪条路径到达。

NAT(地址替换) DHCP(自动分配ip网关子网掩码) CIDR(网段划分)

5.数据到达数据链路层

将ip数据报添加MAC地址到首部封装成帧

帧传到服务器所在的局域网时通过ARP地址解析协议找到对方的MAC地址

ARP:

1)每一台主机都会在ARP cache缓冲区建立一个ARP表格,用来记录ip和Mac位置的对应关系

2)当发送主机要发送数据报给目的主机的时候,会检查自己的表格中是否存在对应关系,若有,则直接发,若没有,本地网络发起一个广播请求,查询目的主机Mac地址,此ARP请求数据包里有源IP地址,源Mac地址,目的ip地址。

3)网络中所有主机收到这个请求之后会检查目的包的ip是否和自己的ip一直,若不同则忽视,若相同,该主机首先将发送端的Mac地址和IP地址添加到自己的表种,如果表中已经有了,则进行覆盖。然后给源主机发送一个ARP相应的数据包,告诉多发自己就是他需要查找的Mac地址,源主机收到响应数据,利用此信息开始传输。

MAC地址也就是物理地址。ip地址和MAC的物理地址是一一对应的,一个网络的设备的ip地址可以更换,但是MAC地址一般不会改变,ARP协议可以将ip地址解析成对应的MAC地址,当双方不在同一个局域网时,需要多次中转才可以到达最终的目标,在中转的过程中需要通过下一个中转站的MAC地址来搜索下一个中转目标。

  在找到对方的MAC之后,就将数据发送到数据链路层,这时客户端请求的阶段完成。

6.服务器接收到数据

接收端的服务器在数据链路层接收到数据包,在层层向上,直到应用层,这个过程包括在传输层通过TCP协议将分段数据重新组成原来的http请求报头。

7.服务器响应

  服务器在收到客户端发送的http请求,查找客户端请求资源,并返回响应的报文,响应中包括一个状态码。有一个301是标识永久重定向,即请求的而资源已经转移到新的位置,在返回301的同时,也会附带一个url,客户端接收到后将http请求的url做相应的改变在重新发送,

8.服务器返回相应的文件

请求成功后,服务器就会返回相应的HTML文件。

在这里补充一个有关分包和分片的概念:

    MTU:最大传输单元    MSS:最大数据报文段

对于tcp来说:他是在传输层就会和对方进行MSS协商,使得自己报文长度正好是ip不会被分片处理的最大长度

对于udp来说:它是在网络层进行分片。但是在分片之后,若有一个丢失,那么整组全部失败,所以我们尽可能的使数据在传输层的传输的长度不超过MSS。

猜你喜欢

转载自blog.csdn.net/Z_JUAN1/article/details/81698111