写在前面
获取IP地址
当新买的网卡插上电脑时,该电脑是没有IP地址的,需要通过发送 DHCP 请求向 DHCP 服务器要一个IP地址,这样电脑才能上网。
下面简单介绍一下这个过程。
首先,新买的网卡只知道自己的MAC地址,并不知道处于同一网络下其他主机的 MAC 地址,所以他会先发送一个广播,查找处于该交换机下其他主机的MAC地址。
其他主机接收到这个广播之后,首先会记录下这个新主机的MAC地址,并且将自己的MAC地址发送给新主机。新主机接收到其他主机发送过来的MAC地址之后建一张表来存储。这样,大家就可以在数据链路层上进行通信了。
接着,新主机会发送一个 DHCP 请求,该请求的IP数据报格式特殊,如下图所示。
交换机看到数据链路层目的地为FF:FF:FF:FF:FF:FF,所以会将该请求转发给连接在交换机下的所有主机,当 DHCP 连接在该交换机下时,DHCP 服务器会查看该请求的IP数据报的目的地和源地址,如果发现目的地是255.255.255.255,源地址是0.0.0.0,那么该DHCP服务器就知道这个是一个申请IP地址的请求,它会返回一个空闲的IP给这个新主机。并且该主机也知道了DHCP的IP和DNS服务器的IP地址。
网络结构如下图所示。
访问外网
访问网页我们一般在浏览器地址栏中键入的都是域名,但是在网络层中进行通信需要知道通信双方的IP地址才行,所以第一步做的就是进行域名解析。
- 域名解析
第一步:浏览器将会检查缓存中有没有这个域名对应的解析过的IP地址,如果有该解析过程将会
结束。浏览器缓存域名也是有限制的,包括缓存的时间、大小,可以通过TTL属性来设置。
第二步:如果用户的浏览器中缓存中没有,浏览器将会查找操作系统缓存中是否有这个域名对应
的DNS解析结果。其实操作系统也会有一个域名解析的过程,在Windows中可以通过
C:WindowsSystem32driversetchosts文件来设置,你可以将任何域名解析到任何能够访问的IP
地址。那么浏览器会首先使用这个IP地址。也正是因为有这种本地DNS解析的规程,所以黑客就
有可能通过修改你的域名解析来把特定的域名解析到它指定的IP地址上,导致这些域名被劫持。
第三步:读取网络设置中的“DNS服务器地址”,操作系统就会将这个域名发送给这里设置的
LDNS,也就是本地的域名服务器。这个DNS通常都提供给你本地互联网接入的一个DNS服务。
如果你实在小区接入的互联网,那这个DNS就是提供给你接入互联网的应用提供商,即电信或者
是联通,也就是通常所说的SPA,可以通过ipconfig查询这个地址。
第四步:如果LDNS仍然没有命中,就直接到Root Server域名服务器中请求解析。
第五步:根域名服务器返回给本地服务器一个所查询域的主域名服务器地址(gTLD Server)。
gTLD是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。
第六步:本地域名服务器(Local DNS Server)再向上一步返回的gTLD服务器发送请求。
第七步:接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址,这
个Name Server通常就是你注册的域名服务器的域名服务商,例如你的域名服务商A那里申请一
个域名,那个gTLD将会把这个域名解析任务交由这个域名服务商的服务器来解析。
第八步:Name Server域名服务器会查询存储的域名和IP的映射关系表,正常情况下都根据域名
得到目标IP表,连同一个TTL值返回给DNS Server域名服务器。
第九步:返回该域名对应的IP以及TTL值,Local DNS Server会缓存这个域名和IP的对应关系,
缓存时间由TTL值限制。
第十步:把解析的结果返回给用户,用户根TTL值缓存在本地系统缓存中,域名解析过程结束
建立TCP连接
获得了服务器的IP地址之后,网关就开始查找自己的路由表进行转发到另外一个路由表,经过数次跳转之后,请求终于到达服务器。
接下来就开始建立TCP连接,TCP建立连接需要进行三次握手,三次握手的目的即为确认发送方和接受方都有发信和收信的能力。服务器内部处理
参考该链接