1. 1. DNS
    1. 1.1. 域名空间结构
    2. 1.2. DNS查询过程
  2. 2. ISO/OSI 七层模型
    1. 2.1. 基本概念
    2. 2.2. 七层详解
  3. 3. TCP/IP 四层模型
    1. 3.1. 基本概念
    2. 3.2. 比较
  4. 4. TCP/IP 通信
    1. 4.1. IP协议
    2. 4.2. TCP协议
网络知识补充——浏览器请求过程

当我们在浏览器中输入一个url,页面是如何呈现出来的呢?

首先,我们在浏览器中输入一个url,浏览器的核心代码会将这个url进行拆分解析。
以Chrome浏览器为例,其解析过程:

  • 搜索浏览器自身的DNS缓存,看这个域名的IP地址是否已经缓存
  • 搜索操作系统自身的DNS缓存(浏览器没有找到缓存或缓存已经失效)
  • 读取本地的HOST文件(操作系统的DNS缓存也没有找到)
  • 浏览器发起一个DNS的一个系统调用,向宽带运营商的DNS服务器发送一个域名请求

紧接着我们就来到了DNS服务器,DNS服务器接受到请求后,开始如下操作:

  • 查找本地缓存
  • 如果未找到对应条目,则服务器将发起一个迭代DNS解析的请求
  • 将迭代查询后的结果返回给操作系统内核同时进行缓存

之后操作系统内核把结果返回给浏览器,浏览器拿到了域名对应的IP地址。这时,浏览器就可以向这个IP地址发送请求,请求通过我们的协议,经过了层层的网络,到达服务端。服务端有一个MVC架构,请求首先会进入Controller层,进行相关的逻辑处理,以及请求的分发,然后来调用Model层,Model层主要负责与数据的交互,在交互过程中会它会读取redis和数据库中存储的数据,最终将渲染好的页面通过View层返回给网络。这时,httpResponse就通过层层网络回到浏览器,浏览器根据请求回来的htmlcssjs进行渲染,最终将页面展现在我们面前。

DNS

DNS全名Domain Name System,我们在互联网中,我们通过IP地址来进行通信,由于IP地址是用数字表示的,看着很不直观难以记忆,所以使用域名来帮助记忆,如:http://www.baidu.com/,而DNS的作用就是将域名转换成IP,或将IP转换成域名,这个过程也叫做解析。
Tip:电脑中的HOST文件是通过静态匹配IP和域名

域名空间结构

  • 根域:.,根域名的服务器只有13台
  • 顶级域(一级域):edugovcomorgmilcn等,由域名分配组织ISO决定
    • 组织域
      1
      2
      3
      4
      5
      6
      gov         政府部门
      com 商业部门
      edu 教育部门
      org 民间团体组织
      net 网络服务机构
      mil 军事部门
    • 国家或地区域
      1
      2
      3
      4
      5
      cn          中国
      jp 日本
      uk 英国
      au 澳大利亚
      hk 中国香港
  • 二级域:个人和企业向域名分配组织申请的,需要购买,如baidusina
  • 主机名(三级域):申请完二级域名后自己规定的,如www(代表网页服务)、NEWS

一个完整的域名是由三级域 + 二级域 + 一级域组成的,并且是全球唯一的。
在互联网中,域名是由结构有规划的。因为域名进行了分级,在进行域名和IP地址解析时才能更容易的找到,即根域名只负责管理一级域名,而一级域名负责管理自己以下的二级域名,以此类推。

DNS查询过程

客户机向指定的域名服务器发送请求,说我想要访问www.baidu.com.cn这个网站,如果这台域名服务器并没有缓存这个域名的IP地址,那么它就会向根DNS服务器询问(每个本地域名服务器都会保存全球13台根服务器的IP地址),根DNS服务器将会返回它管理下的一级域名(cn)的IP地址,紧接着本地域名服务器就向cn服务器发送询问,cn服务器返回com.cn服务器的IP,然后本地服务器接着询问,直到找到www.baidu.com.cn的IP地址,再返回给客户机。这个过程就是DNS迭代查询

ISO/OSI 七层模型

基本概念

  • ISO:国际标准化组织
  • OSI:开放系统互联模型
  • IOS:在计算机网络中,IOS是互联网操作系统,是思科公司为其网络设备开发的操作维护系统
  • OSI七层模型的划分:OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互联系统参考模型。如下图。

每一层实现各自的功能和协议,并完成与相邻层的接口通信。OSI的服务定义详细说明了各层所提供的服务。某一层的服务就是该层及其下各层的一种能力,它通过接口提供给更高一层。各层所提供的服务与这些服务是怎么实现的无关。
注意点:各层通信的接口并不是真实存在的接口,整个分层模型也只是逻辑上的分层。数据传递只在物理层进行,其他层的数据传递只是逻辑上的概念,并没有真实数据传递。

为什么要进行分层?

因为分层可以将功能进行划分,一旦数据传输出了问题,或者需要设计修改相关的功能软件,这样只要针对其中的一层进行排查和修改。分层的目的就是便于管理。

传输单位

  • 比特:bit,机器码的传输单位,每个0或1就是一个比特。
  • 帧:由帧头和帧数据组成。帧头包括接收方主机物理地址的定位以及其他信息。其中这个物理地址就是MAC地址(负责局域网通信)。而帧数据区含有一个数据体。
  • 报文:保存的基本信息为IP地址(负责外网通信)。
  • TPDU:传输协议数据单元。
  • APDU/PPDU/SPDU:由于上三层并不做数据传输,所以这三个单位可用可不用。SPDU是会话协议数据单元,PPDU是表示协议数据单元,ADPU是应用协议数据单元。

七层详解

  • 物理层:设备之间的比特流的传输、物理接口、电气特性等。(网线,网卡)
  • 数据链路层:成帧、用MAC地址访问媒介、错误检测与修正。
  • 网络层:提供逻辑地址(IP)、选路。
  • 传输层:可靠与不可靠的传输(TCP/UDP协议)、传输前的错误检测、流控。(确定端口号,而端口号是用于确定计算机所提供的服务的,例如www,mail等)
  • 会话层:对应用会话的管理、同步。
  • 表示层:数据的表现形式(将机器码转换成我们可以理解的字符,文件格式,反之亦可)、特定功能的实现如加密。
  • 应用层:用户接口(可以理解为各自桌面应用)。

TCP/IP 四层模型

基本概念

  • 网络接口层:与OSI参考模型中的物理层数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。
  • 网际互联层:对应OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议涉及数据包在整个网络上的逻辑传输。该层有三个主要协议:网际协议(IP)互联网组管理协议(IGMP)互联网控制报文协议(ICMP)
  • 传输层:对应OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)用户数据报协议(UDP)
  • 应用层:对应OSI参考模型的高层,为用户提供所需要的各自服务,例如:FTP、Telnet、DNS、SMTP等。

比较

  • 共同点:
    • 都采用了层次结构的概念;
    • 都能够提供面向连接和无连接两种通信服务机制;
  • 不同点:
    • 前者七层模型,后者四层结构;
    • 对可靠性的要求不同(后者更高);
    • OSI模型是在协议开发前设计的,具有通用性。TCP/IP是先有协议集然后建立模型,不适用于非TCP/IP网络。
    • 实际市场应用不同(OSI模型只是理论上的模型,并没有成熟的产品,而TCP/IP已经成为“实际上的国际标准”)。

TCP/IP 通信

当浏览器向服务器发送HTTP请求的时候,数据是如何到达服务器的呢?

首先,为了传输的方便,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文打上标记序号及端口号后转发给网络层。
在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。
接收端的服务器在链路层接收到数据,按序往上层发送,每经过一层就将对应的首部去掉,最终到达服务器的应用层。

IP协议

IP网际协议位于网络层,其作用是把各种数据包传送给对方,而要保证确实传送到,则需要满足各类条件,其中两个重要的条件是IP地址MAC地址(Media Access Control Address)。IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本上不会改变。

APR协议:通过APR协议对IP地址进行解析,可以查出通信方对应的MAC地址,从而进行通信。
路由选择:在到达通信目标前的中转过程中,计算机与路由器等网络设备的传输线路不是固定的。

TCP协议

TCP协议位于传输层,提供可靠的字节流服务。其中字节流服务是指,将大块的数据分割成以报文为单位的数据包进行管理。可靠的传输服务是指能够把数据准确可靠的传给对方。

三次握手:为了确保数据准确传送,TCP协议把数据包传送出去后,会向对方确认是否成功送达。握手过程中使用了TCP标志——SYN(synchronize)和ACK(acknowledgement)。

发送端首先发送一个带SYN标志的数据包给对方,接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带有ACK标志的数据包,代表握手结束。若握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

「我给你讲个TCP的笑话吧」

“我给你讲一个TCP的笑话吧?”
“给我讲一个TCP笑话呗!”
“好的,我会给你讲一个TCP的笑话。”

TCP与UDP比较:UDP也是一种传输协议,但是UDP是不可靠的,将数据包发送之后,就不会验证数据包和回复。