这一个问题能检验一我的的计算机网络基础知识.html
1.得到IP地址
- 想要链接网络须要得到一个IP地址, 因此首先要运行DHCP协议, 从本地DHCP服务器得到一个IP地址以及其余信息.
- 经过操做系统生成一个DHCP请求报文, 并将这个报文放入具备目的端口67(DHCP服务器)和源端口68(本机)的UDP报文段中, 该UDP报文段会被放置在一个具备广播地址(255.255.255.255)和源IP地址为0.0.0.0的IP数据报中.
- 包含DHCP请求报文的IP数据报被放置在以太网帧中. 该以太网帧具备广播目的地址FF:FF:FF:FF:FF:FF和本机的MAC地址00:61:3D:32:86:A8
- 该帧会发送给以太网交换机, 并在全部的输出端口广播该帧.
- 当被广播到DHCP服务器时(运行在路由器中), DHCP服务器为该主机分配IP地址, 并把DNS服务器地址, 默认网关路由器地址, 网络掩码等信息和分配的IP地址一块儿封装成一个DHCP提供报文发送给主机. 主机确认选择好IP地址后将再次与DHCP服务器通讯确认.
- 至此, 咱们的主机得到了IP地址与其余网络配置信息, 能够准备打开浏览器上网了.
2.访问网页前的准备
- 假设咱们如今要访问博客园, 当咱们输入URL:www.cnblogs.com后, 咱们的主机须要知道博客园的IP地址才能与博客园的服务器创建TCP链接并发送HTTP请求. 因此下面将描述根据DNS协议完成名字到IP转换的过程.
- 先把URL放入DNS报文中, 再根据DNS服务器端口和地址依次封装为报文段和数据报, 最后放入到以太网帧中, 并将该帧发送到学校(或家庭)的网关路由器.
- 虽然在第4步中已经得到了网关路由器的IP地址, 但不知道其MAC地址. 为了得到网关路由器的MAC地址, 须要使用ARP查询报文. 接着把ARP封装进以太网帧中, 并在以太网中广播, 最终得到网关的MAC地址.
- 有了网关MAC地址后, 承载DNS报文的数据报就能到达DNS服务器了.
- 咱们简单假设DNS服务器缓存有www.cnblogs.com的IP地址, DNS服务器会造成一个主机名到IP地址映射的DNS回答报文, 放入到UDP报文段中, 进而封装成寻址到咱们能主机的IP数据报, 并经过网络反向传输回咱们的主机.
- 这时咱们的主机获得了服务器www.cnblogs.com的IP地址, 准备访问www.cnblogs.com服务器.
3.与网站服务器交互
- 有了www.cnblogs.com的IP地址, 下面便生成TCP套接字并经过该套接字向www.cnblogs.com发送HTTP GET报文以获取网站内容. 在生成套接字的同时, 咱们主机中的TCP须要和www.cnblogs.com的TCP进行三次握手, 下面开始描述三次握手的过程.
- 主机首先生成一个具备目的端口80的TCP SYN报文段, 将该TCP报文段放到具备目的IP地址的IP数据报中, 继而将数据报放入具备网关路由器MAC地址的帧中, 并向交换机交换该帧.
- 当包含TCP SYN的数据报到达www.cnblogs.com, 服务器从数据报抽取出TCP SYN报文段, 并分解到与端口80相联系的欢迎套接字. 服务器的TCP会与主机生成一个专属套接字, 并产生一个TCP SYNACK报文段, 响应给客户端主机.
- 收到TCP SYNACK后, 咱们的主机进入链接状态, 此时来到三次握手的第三阶段, 我方主机须要向服务器发送ACK报文段, 且能够在ACK报文段中放入数据了. 咱们把GET报文放入报文段的数据载荷字段, 并发送给服务器.
- 博客园的服务器接收到HTTP GET报文后, 生成一个HTTP响应报文, 并把Web页面的内容放入到报文中, 响应给咱们的主机.
- 最后咱们的主机读取HTTP响应报文, 抽取出html数据, 并将网页显示在浏览器上.
小结
- 不要小看连网和浏览网页这一能在数秒能完成的操做, 它涵盖了足够多的网络知识, 上面的叙述已经高度简化, 里面的每一个操做背后都对应着丰富的知识.
- 想要了解这些动做背后都发生了什么, 最好的方法是系统地看一本讲述网络知识的书. 以上的内容是《计算机网络 自顶向下方法》第六章协议栈结束后所描述的场景. 也是看了这本书后, 才知道平时经常使用的网络背后蕴含这么多知识.