在浏览器中输入网址后,计算机背后都做了些什么事?

首先感谢阮一峰老师的讲解

很长一段时间,都不清楚计算机通信背后所作的事情。经过长时间的经验积累与查询第三方资料,今天我就我所知道计算机通信与大家分享,错误之处还请指正!

1.确定访问的目标地址

浏览器中输入网址后,首先浏览器需要知道访问的目标地址(也就是IP地址),如果,输入的是IP地址(如:172.217.24.14),那就跳过这一步了。

如果是字符串域名,先去DNS域名服务器查询对应域名的IP地址,DNS服务器返回该域名的IP地址,域名服务器的默认访问端口是53。

2.准备HTTP通信包,分为请求头,请求行,请求体,详细的细节这里不在叙述,网上有很多资料。

浏览器(应用层)根据获得的目标IP组装好HTTP请求包。假如是4096个字节,通过建立传输层TCP连接进行通信。

3.准备TCP通信包

首先TCP通信包分为包头(head)和包体(data),上一步中的http通信包放在TCP通信包的包体(data)部分。TCP数据包需要设置端口。

第一步可以拿到接收方的端口,发送方的端口是一个随机端口,范围为0~65535,0~0124端口默认系统占用,一般使用大于1024的端口

TCP数据包包头长度为20字节,加上HTTP协议包4096个字节,总共是 4116字节。

4.准备网络层通信包

IP协议包分为包头和包体,将TCP协议包再嵌入IP协议包的包体(data)部分,IP数据包需要设置访问方和接收方的IP地址,到这一步,IP地址已经是已知的了。

IP协议包的包头为20个字节,加上TCP协议包,总共是4136字节。

5.准备以太网协议通信包

以太网协议包分为包头和包体,将TCP协议包嵌入以太网协议包的包体(data),以太网协议包需要设置双方的MAC地址(物理网卡地址),

发送方为本机的MAC地址,接收方的MAC地址分两种情况:

用双方的IP地址分别与访问方的子网掩码做二进制的与运算,如果结果一致,则双方处于统一子网下,

如果双方处于同一子网下,可以通过ARP协议拿到对方的MAC地址。反之不相等,则不处于同一子网下,比如我的电脑和谷歌的服务器肯定处于不同子网下,

那接收方的MAC地址就是当前子网的网关的MAC地址,以太网协议数据包的数据部分,最大长度为1500字节,所以IP数据包需要拆分成三个包,

每个包都有自己包头,所以三个IP协议包长度为1500,1500,1196

 

 

备注:上图多画了一个数据包,应该是三个不是四个

6.发送数据包

以太网数据包通过网卡发送到多重网关发送到目标服务器,目标服务器根据IP表头的序号,将三个包拼接起来,取出完成的TCP数据包,读出里面的HTTP请求包,

做出响应后,再通过上面的顺便发送响应包到接收方的电脑上,呈现在浏览器中,至此,一次http通信就完成了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值