【网络原理】总结篇——在地址栏当中输入了URL之后发生了什么

目录

HTTP部分

解析URL,从而生成发送给Web服务器的请求信息。

然后,就会构造HTTP请求body

DNS部分

域名层级

域名解析过程

DNS缓存

协议栈

传输层:TCP协议

TCP数据分割

TCP报文生成:

网络层:IP协议

源IP和目的IP

两点传输:MAC(数据链路层)

MAC 发送方和接收方如何确认? 

HTTP部分

解析URL,从而生成发送给Web服务器的请求信息。

也就是解析URL由哪几部分构成的。

下图来源于《小林coding》

 关于具体HTTP请求有哪几部分构成的,可以参考前面的文章:

【网络原理8】HTTP请求篇_革凡成圣211的博客-CSDN博客HTTP的常见属性,URL,User-Agent,Refer,get 和post的区别https://blog.csdn.net/weixin_56738054/article/details/129180661?spm=1001.2014.3001.5502

然后,就会构造HTTP请求body


DNS部分

域名层级

 在发送之前,还需要DNS来查询域名和与之对应的IP地址之间的映射关系

域名这种东西,一般都是使用.来隔开的:

例如上图的:blog.csdn.net,其中:越往的域名它的层级越

因此在上图当中:其实完整的域名是:blog.csdn.net.

也就是一个完整的域名之后,还有最后一个.(点)

域名层级域名名称域名描述
1.(是一个点)根DNS服务器
2.net顶级域DNS服务器
3server.com权威DNS服务器

域名解析过程

       客户端首先会发出一个DNS请求,发给本地的DNS服务器。

       然后,会不断从大范围的域名(.),也就是最右边的域名。依次从右往左解析域名,范围也逐渐从大到小,最后得出完成的IP地址。

       下图来源于《小林coding》

  当然,也不是说每一次输入URL地址,都会要经过上述的解析过程的。


DNS缓存

       浏览器首先看自身有没有对于这个域名的缓存,如果有,就直接返回。

       如果没有,就去操作系统当中查看。有就直接返回,没有就去hosts文件查看。

       如果hosts文件当中有,那么就直接读取这个hosts文件的内容。没有的话,就需要经过上述的解析过程。


协议栈

 通过DNS解析到正确的IP地址之后,就可以把HTTP的传输工作交给操作系统当中的"协议栈"。

协议栈的内容,分别承担不同的工作,上层的协议会委托下层的协议完成传输。


传输层:TCP协议

HTTP的1.0和2.0版本都是使用TCP协议进行传输的。

关于TCP的协议介绍,已经在这两篇文章当中介绍过了,下面聊几个重点部分的内容。

【网络原理4】TCP特性篇_革凡成圣211的博客-CSDN博客TCP拥塞控制、流量控制、粘包问题、滑动窗口https://blog.csdn.net/weixin_56738054/article/details/129018832?spm=1001.2014.3001.5502【网络原理3】TCP连接管理_革凡成圣211的博客-CSDN博客TCP三次握手、四次挥手https://blog.csdn.net/weixin_56738054/article/details/128961091?spm=1001.2014.3001.55021.确定源端口目的端口,如果没有这两个端口,数据就不知道该发给哪一个应用。

2.进行三次握手建立连接(上面文章也提到了)

但是,有时候也有可能会触发一些TCP数据分割:


TCP数据分割(专门分割的是HTTP部分的数据)

       如果HTTP请求消息比较长,超过了MSS的长度,这个时候就需要把TCP载荷,也就是(HTTP的数据)分解成多块,而不是一次性发送所有的数据。

     MTU:以太网载荷部分的最大长度。

     MSS:TCP载荷部分的最大长度。


        TCP报文(HTTP部分)数据会被以MSS的长度为单位进行拆分,拆分出来的每一块数据都会被放进单独的TCP包中。也就是在每个被拆分的数据加上 TCP 头信息,然后交给 IP 模块(网络层)来发送数据。 


TCP报文生成:

       TCP报头当中包含了源端口 ,一个是浏览器监听的端口(随机生成的),另一个是Web服务器的端口(HTTP默认端口是80端口,HTTPS默认是443端口)

       然年,TCP载荷部分的内容就是HTTP/HTTPS报文的内容


网络层:IP协议

回顾一下网络层的含义:负责网络地址管理和路由器选择。

在这一层,将会制定具体传输的计划方案,传输路径等等。

但是,还有两个比较重要的概念:那就是:

源IP和目的IP


两点传输:MAC(数据链路层)

关于什么是MAC地址管理,已经在这一篇文章当中提到了:

【网络原理6】数据链路层协议——以太网_革凡成圣211的博客-CSDN博客数据链路层协议:以太网https://blog.csdn.net/weixin_56738054/article/details/129107605?spm=1001.2014.3001.5502就是负责两个相邻节点之间的网络传输。


MAC 发送方和接收方如何确认? 

       发送方的MAC地址获取就比较简单了,MAC地址是在网卡出厂的时候就已经确定好了的。

       对于接收方(下一个网络节点)的IP地址,是怎样确定的,这就是一个比较复杂的过程了。


        ARP协议会在以太网当中以广播的形式,喊出来:现在我手上有一个IP地址(下一个网络节点的IP地址),请问这个节点的MAC地址是什么? 

       但是,并不是每发送一次网络请求,就需要一次"广播"。

        后续操作系统会把映射的关系保存到一块内存空间当中留着以后用。

       那么,也就变成了,发包的时候:

       先查询ARP缓存,如果里面有了接收方的MAC地址,那么就不需要"广播"。

       如果没有ARP地址,那么就需要发送ARP广播来查询。


 后续,还需要经过网卡路由器交换机,然后到达接收方的服务器。

 再经过一次逆向转换,接收方就收到了对应的请求了。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值