终极版:从开机联网到输入一个网址期间都发生了什么?

这一个问题能检验一我的的计算机网络基础知识.html

1.得到IP地址

  • 想要链接网络须要得到一个IP地址, 因此首先要运行DHCP协议, 从本地DHCP服务器得到一个IP地址以及其余信息.
  1. 经过操做系统生成一个DHCP请求报文, 并将这个报文放入具备目的端口67(DHCP服务器)和源端口68(本机)的UDP报文段中, 该UDP报文段会被放置在一个具备广播地址(255.255.255.255)和源IP地址为0.0.0.0的IP数据报中.
  2. 包含DHCP请求报文的IP数据报被放置在以太网帧中. 该以太网帧具备广播目的地址FF:FF:FF:FF:FF:FF和本机的MAC地址00:61:3D:32:86:A8
  3. 该帧会发送给以太网交换机, 并在全部的输出端口广播该帧.
  4. 当被广播到DHCP服务器时(运行在路由器中), DHCP服务器为该主机分配IP地址, 并把DNS服务器地址, 默认网关路由器地址, 网络掩码等信息和分配的IP地址一块儿封装成一个DHCP提供报文发送给主机. 主机确认选择好IP地址后将再次与DHCP服务器通讯确认.
  5. 至此, 咱们的主机得到了IP地址与其余网络配置信息, 能够准备打开浏览器上网了.

2.访问网页前的准备

  • 假设咱们如今要访问博客园, 当咱们输入URL:www.cnblogs.com后, 咱们的主机须要知道博客园的IP地址才能与博客园的服务器创建TCP链接并发送HTTP请求. 因此下面将描述根据DNS协议完成名字到IP转换的过程.
  1. 先把URL放入DNS报文中, 再根据DNS服务器端口和地址依次封装为报文段和数据报, 最后放入到以太网帧中, 并将该帧发送到学校(或家庭)的网关路由器.
  2. 虽然在第4步中已经得到了网关路由器的IP地址, 但不知道其MAC地址. 为了得到网关路由器的MAC地址, 须要使用ARP查询报文. 接着把ARP封装进以太网帧中, 并在以太网中广播, 最终得到网关的MAC地址.
  3. 有了网关MAC地址后, 承载DNS报文的数据报就能到达DNS服务器了.
  4. 咱们简单假设DNS服务器缓存有www.cnblogs.com的IP地址, DNS服务器会造成一个主机名到IP地址映射的DNS回答报文, 放入到UDP报文段中, 进而封装成寻址到咱们能主机的IP数据报, 并经过网络反向传输回咱们的主机.
  5. 这时咱们的主机获得了服务器www.cnblogs.com的IP地址, 准备访问www.cnblogs.com服务器.

3.与网站服务器交互

  1. 有了www.cnblogs.com的IP地址, 下面便生成TCP套接字并经过该套接字向www.cnblogs.com发送HTTP GET报文以获取网站内容. 在生成套接字的同时, 咱们主机中的TCP须要和www.cnblogs.com的TCP进行三次握手, 下面开始描述三次握手的过程.
  2. 主机首先生成一个具备目的端口80的TCP SYN报文段, 将该TCP报文段放到具备目的IP地址的IP数据报中, 继而将数据报放入具备网关路由器MAC地址的帧中, 并向交换机交换该帧.
  3. 当包含TCP SYN的数据报到达www.cnblogs.com, 服务器从数据报抽取出TCP SYN报文段, 并分解到与端口80相联系的欢迎套接字. 服务器的TCP会与主机生成一个专属套接字, 并产生一个TCP SYNACK报文段, 响应给客户端主机.
  4. 收到TCP SYNACK后, 咱们的主机进入链接状态, 此时来到三次握手的第三阶段, 我方主机须要向服务器发送ACK报文段, 且能够在ACK报文段中放入数据了. 咱们把GET报文放入报文段的数据载荷字段, 并发送给服务器.
  5. 博客园的服务器接收到HTTP GET报文后, 生成一个HTTP响应报文, 并把Web页面的内容放入到报文中, 响应给咱们的主机.
  6. 最后咱们的主机读取HTTP响应报文, 抽取出html数据, 并将网页显示在浏览器上.

小结

  • 不要小看连网和浏览网页这一能在数秒能完成的操做, 它涵盖了足够多的网络知识, 上面的叙述已经高度简化, 里面的每一个操做背后都对应着丰富的知识.
  • 想要了解这些动做背后都发生了什么, 最好的方法是系统地看一本讲述网络知识的书. 以上的内容是《计算机网络 自顶向下方法》第六章协议栈结束后所描述的场景. 也是看了这本书后, 才知道平时经常使用的网络背后蕴含这么多知识.
相关文章
相关标签/搜索