auto commit

This commit is contained in:
CyC2018 2018-02-21 17:16:09 +08:00
parent 23f183e332
commit 1ad01b547d

View File

@ -83,7 +83,7 @@
* [SMTP](#smtp)
* [动态主机配置协议 DHCP](#动态主机配置协议-dhcp)
* [点对点传输 P2P](#点对点传输-p2p)
* [在浏览器中输入 www.baidu.com 后执行的全部过程](#在浏览器中输入-wwwbaiducom-后执行的全部过程)
* [Web 页面请求过程](#web-页面请求过程)
* [常用端口](#常用端口)
* [参考资料](#参考资料)
<!-- GFM-TOC -->
@ -810,15 +810,23 @@ DHCP
P2P 是一个分布式系统,任何时候都有对等方加入或者退出。使用分布式散列表 DHT可以查找洪流中的资源和 IP 地址映射。
## 在浏览器中输入 www.baidu.com 后执行的全部过程
## Web 页面请求过程
1、客户端浏览器通过 DNS 解析到 www.baidu.com 的 IP 地址 220.181.27.48,通过这个 IP 地址找到客户端到服务器的路径。客户端浏览器发起一个 HTTP 会话到 220.161.27.48,然后通过 TCP 进行封装数据包,输入到网络层
1. 向 DNS 服务器发送 DNS 查询报文来解析域名
2、在客户端的传输层,把 HTTP 会话请求分成报文段,添加源和目的端口,如服务器使用 80 端口监听客户端的请求,客户端由系统随机选择一个端口如 5000与服务器进行交换服务器把相应的请求返回给客户端的 5000 端口。然后使用 IP 层的 IP 地址查找目的端
2. 开始进行 HTTP 会话,需要先建立 TCP 连接
3、客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器
3. 在运输层的传输过程中HTTP 报文被封装进 TCP 中。HTTP 请求报文使用端口号 80因为服务器监听的是 80 端口。连接建立之后,服务器会随机分配一个端口号给特定的客户端,之后的 TCP 传输都是用这个分配的端口号
4、客户端的链路层包通过链路层发送到路由器通过邻居协议查找给定 IP 地址的 MAC 地址,然后发送 ARP 请求查找目的地址,如果得到回应后就可以使用 ARP 的请求应答交换的 IP 数据包现在就可以传输了,然后发送 IP 数据包到达服务器的地址。
4. 在网络层的传输过程中TCP 报文段会被封装进 IP 分组中IP 分组经过路由选择,最后到达目的地。
5. 在链路层IP 分组会被封装进 MAC 帧中IP 地址解析成 MAC 地址需要使用 ARP。
6. 客户端发送 HTTP 请求报文,请求获取页面。
7. 服务器发送 HTTP 相应报文,客户端从而获取该页面。
8. 浏览器得到页面内容之后,解析并渲染,向用户展示页面。
## 常用端口
@ -838,4 +846,3 @@ P2P
- 计算机网络 第七版
- 自顶向下计算机网络
- [ 计算机网络之面试常考 ](https://www.nowcoder.com/discuss/1937)