【计算机基础知识】计算机网络大纲
〇、基础概念
0.1 零散概念
-
网络(network):由若干结点(node)和连接这些结点的链路(link)组成。互联网(因特网)是“网路的网络”。
-
主机(host):连接在网络中的计算机。
-
分类:
- 广域网 WAN (Wide Area Network)
- 局域网 LAN (Local Area Network)
- 城域网 MAN (Metropolitan Area Network)
- 个人区域网 PAN (Personal Area Network)
-
性能
-
速率:数据率(data rate)或比特率(bit rate)
-
带宽(bandwidth):数字信道所能传送的“最高数据率”,单位是“比特每秒”
-
吞吐量(throughput):单位时间内通过某个网络(或信道、接口)的数据量。
-
传输时延:
-
发送数据时,数据块从结点进入到传输媒体所需要的时间。就是从发送数据帧的第一个比特算起,到该帧最后一个比特发送完毕的时间。
根据排队论的理论,当某信道的利用率增大时,该信道引起的时延也就迅速增加。
-
0.2 因特网的组成(边缘和核心)
-
边缘部分:由主机组成,用来进行通信和资源共享。
- 注:计算机之间的通信实际上是主机A上的进程和主机B上的进程通信。
- 端系统中程序通信方式分为两类:
- C/S:客户服务器,Client/Server
- 客户是服务的请求方,服务器是服务的提供方。后者需要能同时处理多个远程/本地客户的调用请求。 系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。
- P2P:对等方式,Peer-to-Peer
- 平等的、对等连接通信。每一个主机既是客户又同时是服务器。
- C/S:客户服务器,Client/Server
-
核心部分:由大量网络和路由器组成。为边缘部分提供服务(连通性和交换)。
- 路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组(packet,也称包,是因特网交换的数据单元,包括首部[包含一系列控制信息]和数据段)。
-
核心部分的路由器之间一般用高速链路相连接,
网络边缘的主机接入到核心部分则通常以相对低速率的链路相连接。
0.3 实体、协议、服务和服务访问点
-
实体(entity):表示任何可发送或接收信息的硬件或软件进程。
-
协议:是控制两个对等实体进行通信的规则的集合。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下层所提供的服务。本层的服务用户只能看见服务而无法看见下面的协议。
协议很复杂协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的。
-
协议是“水平的”,即协议是控制对等实体之间通信的规则。
服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。
0.4 分层(重要)
OSI七层 / TCPIP四层 / 五层理论
一、物理层
任务:确定与传输媒体的接口的一些特性。
最终目标是实现去差异化,使得上层感受不到不同传输特性下的执行差异。
- 机械特性 指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等。
- 电气特性 指明在接口电缆的各条线上出现的电压的范围。
- 功能特性 指明某条线上出现的某一电平的电压表示何种意义。
- 过程特性 指明对于不同功能的各种可能事件的出现顺序。
硬件设备:网卡,网线,集线器,中继器,调制解调器
1.1 基本概念
-
数据(data):运送消息的实体。
-
信号(signal):数据的电气的或电磁的表现。
-
“模拟的”(analogous):消息的参数取值是连续的。
-
“数字的”(digital):消息的参数的取值是离散的。
-
码元(code):用时域波形表示数字信号时,代表不同离散数值的基本波形。
-
交互方式:
- 单向通信(单工):只能有一个方向的通信而没有反方向的交互。
- 双向交替通信(半双工):通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)。
- 双向同时通信(全双工):通信的双方可以同时发送和接收信息。
-
基带信号(即基本频带信号)——来自信源的未处理的信号。基带信号往往包含有较多的低频成分,而许多信道并不能传输这种低频分量或直流分量。因此须对基带信号进行调制(modulation)。调制方法有:
调幅(AM)
:载波的振幅随基带数字信号而变化。调频(FM)
:载波的频率随基带数字信号而变化。调相(PM)
:载波的初始相位随基带数字信号而变化。
-
带通信号——把基带信号经过载波调制后,把信号的频率范围搬移到较高的频段以便在信道中传输(即仅在一段频率范围内能够通过信道)。
-
传输媒介:分为导向性(电缆、光纤)和非导向性(无线、红外等)
-
奈氏准则:码元传输效率有上限(超出后会码间串扰,使接收端无法接收)
-
香农定理:信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。信息数据传输速率有上限。
1.2 复用技术
复用(multiplexing)是通信技术中的基本概念。
-
频分复用(FDM)
所有用户在同样的时间占用不同的带宽资源。
-
时分复用(TDM)
所有用户是在不同的时间占用同样的频带宽度。将时间划分为一段段等长的时分复用帧(TDM 帧)。每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙。
-
码分复用(CDM)
各用户使用经过特殊挑选的不同码型,因此彼此不会造成干扰。有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
1.3 集线器与交换机(数据链路层)与路由器(网络层)
集线器:将一些机器连接成一个局域网。采用共享带宽。
交换机(交换式集线器):功能类似但性能不同。采用独享带宽。
- 工作方式不同 : 集线器是一种广播方式,当集线器的某个端口工作时其他端口都能收听到信息。交换机工作时端口互不影响。
- 带宽不同 :集线器所有端口共享一条带宽,在同一时刻只能有两个端口传输数据;而交换机每个端口独占一条带宽。
- 性能不同 :交换机以MAC地址进行寻址,有一定额外的寻址开销;集线器以广播方式传输数据,流量小时性能下降不明显,适用于共享总线的局域网。
路由器:路由器从功能上可以划分为:路由选择和分组转发。
-
数据转发所依据的对象不同。交换机是利用MAC地址确定转发数据的目的地址。路由器利用IP地址来确定数据转发的地址。
- MAC地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。
- IP地址是在软件中实现的,描述的是设备所在的网络。IP地址通常由网络管理员或系统自动分配。
-
传统的交换机只能分割冲突域,不能分割广播域;路由器可以分割广播域。
-
由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。
连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有VLAN功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。
-
-
交换机负责同一个网段的通信,而路由器负责不同网段的通信。
- 路由器提供了防火墙的服务。路由器仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。
二、数据链路层
-
名字指出要的资源,地址指出资源位置,路由告知如何到达目标点
-
PC和ISP通信用的数据链路协议有两种类型:
点对点信道(PPP):这种信道使用一对一的点对点通信方式。只检错不改错。
广播信道:这种信道使用一对多的广播通信方式,过程比较复杂。广播信道上连接的主机很多,必须使用专用的共享信道协议来协调这些主机的数据发送与接收。
设备:网桥,交换机
2.1 基本概念
- 链路(link):一条无源的点到点的物理线路段,中间没有任何其他的交换结点。(一条通路的一个组成部分)
- 数据链路(data link):把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
- 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
- 一般的适配器都包括了数据链路层和物理层这两层的功能。
- 误码率(Bit Error Rate):在一段时间内,传输错误的比特占所传输比特总数的比率。
- 最大传输单元(Maximum Transfer Unit):一帧中数据部分的长度上限。
- MAC地址(Media Access Control):或称为物理地址、硬件地址,用来定义网络设备的位置。第三层网络层负责 IP 地址,第二层数据链路层则负责 MAC 地址。
- 如果说,互联网中每一个资源都由 IP 地址唯一标识(IP 协议内容),那么一切网络设备都由 MAC 地址唯一标识。
- 适配器(adapter):
- 进行串行/并行转换(计算机和网卡之间并行通信,网卡和局域网通过双绞线进行串行通信)。
- 对数据进行缓存(网络上的数据率和计算机总线上的数据率不相同)。
- 在计算机的操作系统安装设备驱动程序。
- 实现以太网协议。适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址.
2.2 三个基本问题
-
封装成帧
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
帧:数据链路层传输单元
-
透明传输
解决方案:
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。
- 字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
- 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
-
差错检测
-
在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。
-
循环冗余检验(CRC)
-
假设待传送的一组数据 M = 101001(位数k = 6)。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。
-
冗余码的计算 用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少1 位,即 R 是 n 位。
-
eg:
现在 k = 6, M = 101001。
设 n = 3, 除数 P = 1101,
被除数是 2nM = 101001000。
模 2 运算的结果是:商 Q = 110101,余数 R = 001。
把余数 R 作为冗余码添加在数据 M 的后面发送出去。发送的数据是:2nM + R; 即:101001001,共 (k + n) 位。
-
-
在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
-
接收端对收到的每一帧进行 CRC 检验
-
(1) 若得出的余数 R = 0,则判定这个帧没有差错,就接受(accept)。
-
(2) 否则判定这个帧有差错,就丢弃。
-
-
-
要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
-
2.3 PPP点对点协议
PPP 协议的组成
- 一个将 IP 数据报封装到串行链路的方法。
- 链路控制协议 LCP (Link Control Protocol)。
- 网络控制协议 NCP (Network Control Protocol)。
2.3.1 PPP协议的帧格式
- 标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示)。
- 地址字段 A 只置为 0xFF。地址字段实际上并不起作用。
- 控制字段 C 通常置为 0x03。
- PPP 有一个 2 个字节的协议字段。
- 当协议字段为 0x0021 时,PPP 帧的信息字段就是IP 数据报。
- 若为 0xC021, 则信息字段是 PPP 链路控制数据。
- 若为 0x8021,则表示这是网络控制数据。
- FCS即冗余码
2.3.2 工作状态
当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。
2.4 局域网技术(以太网)
局域网主要特点:网络为一个单位所拥有,且地理范围和站点数目均有限。可靠性更高。
2.4.1 局域网按网络拓扑结构
- 星型网:由于集线器和双绞线的使用,星型以太网得到广泛使用。
- 环形网:典型代表:令牌环形网。
- 总线网:两端匹配电阻吸收电磁波信号的能量,避免在总线上产生有害的电磁波反射。CSMA/CD协议
- 树形网:主要用于频分复用的宽带局域网。
为了更好适应局域网,将数据链路层拆分为
- 逻辑链路控制 LLC (Logical Link Control)子层(IEEE 802.2标准 以后基本消失由于 TCP/IP 体系经常使用的局域网是 DIX Ethernet V2 而不是 802.3 标准中的几种局域网)
- 媒体接入控制 MAC (Medium Access Control)子层。
- 与接入到传输媒体有关的内容都放在 MAC子层,而 LLC 子层则与传输媒体无关,不管采用何种协议的局域网对 LLC 子层来说都是透明的
2.4.2 CSMA/CD 协议
载波监听多点接入/碰撞检测
- “多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
- “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
- 总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
- “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。
使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
2.4.3 MAC帧
-
类型字段用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议。
-
数据字段的正式名称是 MAC 客户数据字段,最小长度 64 字节 -18 字节的首部和尾部 = 数据字段的最小长度
- 当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的 MAC 帧长不小于 64 字节。
- 在帧的前面插入的 8 字节中的第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC 帧的比特同步。
- 第二个字段是帧开始定界符,表示后面的信息就是MAC 帧。
为了达到比特同步,在传输媒体上实际传送的要比 MAC 帧还多 8 个字节。(指的就是前面的八个字节)
无效的:
- 帧的长度不是整数个字节;
- 用收到的帧检验序列 FCS 查出有差错;
- 数据字段的长度不在 46 ~ 1500 字节之间。
- 有效的 MAC 帧长度为 64 ~ 1518 字节之间。
- 对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。
2.4.4 扩展局域网
- 物理层上扩展
- 数据链路层上扩展(用网桥)
- 当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口
- 网桥在转发帧之前必须执行 CSMA/CD 算法。
三、网络层
任务:选择合适的网间路由和交换结点, 确保数据及时传送。网络层不提供服务质量的承诺,不保证分组交付的时限所传送的分组可能出错,丢失,重复和失序。进程之间通信的可靠性由运输层负责
网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。
网络层协议的代表包括:IP、IPX、RIP、OSPF等。
设备:路由器
3.1 基本概念
- IP(Internet Protocol ) : 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一,是 TCP/IP 体系结构网际层的核心。配套的有 ARP,RARP,ICMP,IGMP。
- ARP(Address Resolution Protocol) : 地址解析协议。地址解析协议 ARP 把 IP 地址解析为硬件地址。ARP 的高速缓存可以大大减少网络上的通信量。下次再与同样地址的主机通信时,可以直接从高速缓存中找到所需要的硬件地址。
- ICMP(Internet Control Message Protocol ) :网际控制报文协议 (ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告)。
- 子网掩码(subnet mask ) :它是一种用来指明一个 IP 地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合 IP 地址一起使用。
- CIDR( Classless Inter-Domain Routing ):无分类域间路由选择
- 路由选择算法(Virtual Circuit) :路由选择协议的核心部分。因特网采用自适应的,分层次的路由选择协议
3.2 IP协议相关
IP 协议可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。
3.2.1 数据格式
3.2.2 IP地址编址方式
- 分类
- 两部分组成,网络号和主机号
- 子网划分
- 在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。要使用子网,必须配置子网掩码。
- 无分类域间路由选择CIDR(解决ip精确的方法)
无分类编址 CIDR
消除了传统 A 类、B 类和 C 类地址以及划分子网的概念- CIDR 记法在 IP 地址后面加上斜线“/”,然后写上前缀所占的位数。前缀(或网络前缀)用来指明网络,前缀后面的部分是后缀,用来指明主机。CIDR 把前缀都相同的连续的 IP 地址组成一个“CIDR 地址块”,IP 地址分配都以 CIDR 地址块为单位。
3.3.3 配套协议
- 地址解析协议 ARP(Address Resolution Protocol)
- 因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。
- ARP 实现由 IP 地址得到 MAC 地址。
-
网际控制报文协议 ICMP(Internet Control Message Protocol)
-
封装在 IP 数据报中,但是不属于高层协议。分为差错报告报文和询问报文。
-
-
网际组管理协议 IGMP(Internet Group Management Protocol)
分类的 IP 地址由网络号字段(指明网络)和主机号字段(指明主机)组成。网络号字段最前面的类别指明 IP 地址的类别。IP 地址是一种分等级的地址结构。IP 地址管理机构分配 IP 地址时只分配网络号,主机号由得到该网络号的单位自行分配。路由器根据目的主机所连接的网络号来转发分组。一个路由器至少连接到两个网络,所以一个路由器至少应当有两个不同的 IP 地址。
IP 数据报分为首部和数据两部分。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据包必须具有的(源地址,目的地址,总长度等重要地段都固定在首部)。一些长度可变的可选字段固定在首部的后面。IP 首部中的生存时间给出了 IP 数据报在互联网中所能经过的最大路由器数。可防止 IP 数据报在互联网中无限制的兜圈子。
网际控制报文协议是 IP 层的协议。ICMP 报文作为 IP 数据报的数据,加上首部后组成 IP 数据报发送出去。使用 ICMP 数据报并不是为了实现可靠传输。ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
3.3.4 IPV6
- IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
- 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中
- 灵活的首部格式
- 允许协议继续扩充
- 支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP
- 支持资源的预分配
3.3.5 IP和Mac的关系
此处来源为https://www.zhihu.com/question/21546408/answer/28155896
- 整体与局部
信息传递时候,需要知道的其实是两个地址:终点地址(Final destination address)下一跳的地址(Next hop address)
IP地址本质上是终点地址,它在跳过路由器(hop)的时候不会改变,而MAC地址则是下一跳的地址,每跳过一次路由器都会改变。这就是为什么还要用MAC地址的原因之一,它起到了记录下一跳的信息的作用。
注:一般来说IP地址经过路由器是不变的,不过NAT(Network address translation)例外,这也是有些人反对NAT而支持IPV6的原因之一。
- 分层实现
如果在IP包头(header)中增加了”下一跳IP地址“这个字段,在逻辑上来说,如果IP地址够用,交换机也支持根据IP地址转发(现在的二层交换机不支持这样做),其实MAC地址并不是必要的。
但用MAC地址和IP地址两个地址,用于分别表示物理地址和逻辑地址是有好处的。这样分层可以使网络层与链路层的协议更灵活地替换,网络层不一定非要用『IP』协议,链路层也不一定非用『以太网』协议。
这就像OSI七层模型,TCP/IP五层模型其实也不是必要的,用双层模型甚至单层模型实现网络也不是不可以的,只是那样做很蛋疼罢了。
- 早期的『以太网』实现
早期的以太网只有集线器(hub),没有交换机(switch),所以发出去的包能被以太网内的所有机器监听到,因此要附带上MAC地址,每个机器只需要接受与自己MAC地址相匹配的包。
3.3 网络地址转换NAT
用于解决在专用网上使用专用地址的主机与互联网上的主机通信(并不需要加密)
装有 NAT 软件的路由器叫作 NAT路由器,它至少有一个有效的外部全球IP地址,所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址。
-
转换过程
-
内部主机 A 用本地地址 IPA 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器。
-
NAT 路由器将数据报的源地址 IPA 转换成全球地址 IPG,并把转换结果记录到NAT地址转换表中,目的地址 IPB 保持不变,然后发送到互联网。
-
NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 IPB 而目的地址是 IPG。
-
根据 NAT 转换表,NAT 路由器将目的地址** IPG 转换为 IPA,转发给最终的内部主机 A**。
-
可以看出,在内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换:
- 离开专用网时:替换源地址,将内部地址替换为全球地址;
- 进入专用网时:替换目的地址,将全球地址替换为内部地址;
3.3 ARP 协议
- 位置:串联起了网络层和链路层。国外的大部分教程通常将 ARP 协议放在网络层。
- 作用:IP ——>MAC
- 地址解析协议(Address Resolution Protocol),它解决的是网络层地址和链路层地址之间的转换问题。因为一个 IP 数据报在物理上传输的过程中,总是需要知道下一跳(物理上的下一个目的地)该去往何处,但 IP 地址属于逻辑地址,而 MAC 地址才是物理地址,ARP 协议解决了 IP 地址转 MAC 地址的一些问题。
- IP 地址只是一种不重复的定位方式(比如说住在某省某市某街道的张三,这种逻辑定位是 IP 地址,他的身份证号才是他的 MAC 地址),也可以理解为 MAC 地址是身份证号,IP 地址是邮政地址。MAC 地址也有一些别称,如 LAN 地址、物理地址、以太网地址
- 工作原理:ARP 表、广播问询、单播响应
- ARP 表记录了某些其他网络设备的 IP 地址-MAC 地址映射关系,该映射关系以
<IP, MAC, TTL>
三元组的形式存储。其中,TTL 为该映射关系的生存周期,典型值为 20 分钟,超过该时间,该条目将被丢弃。
- ARP 表记录了某些其他网络设备的 IP 地址-MAC 地址映射关系,该映射关系以
3.3.1 同一局域网下寻址
-
主机 A 检索自己的 ARP 表,发现 ARP 表中并无主机 B 的 IP 地址对应的映射条目,无从知道主机 B 的 MAC 地址。
-
主机 A 将构造一个 ARP 查询分组,并将其广播到所在的局域网中。
ARP 分组是一种特殊报文,ARP 分组有两类,一种是查询分组,另一种是响应分组,均包含了发送和接收的 IP 地址、发送和接收的 MAC 地址。
当然了,查询分组中,发送的 IP 地址,即为主机 A 的 IP 地址,接收的 IP 地址即为主机 B 的 IP 地址,发送的 MAC 地址也是主机 A 的 MAC 地址,但接收的 MAC 地址绝不会是主机 B 的 MAC 地址(因为这正是我们要问询的!),而是一个特殊值——
FF-FF-FF-FF-FF-FF
,之前说过,该 MAC 地址是广播地址,也就是说,查询分组将广播给该局域网内的所有设备。 -
主机 A 构造的查询分组将在该局域网内广播。
理论上,每一个设备都会收到该分组,并检查查询分组的接收 IP 地址是否为自己的 IP 地址,如果是,说明查询分组已经到达了主机 B,否则,该查询分组对当前设备无效,丢弃之。
-
主机 B 收到了查询分组之后,验证是对自己的问询,接着构造一个 ARP 响应分组,该分组的目的地只有一个——主机 A,发送给主机 A。同时,主机 B 提取查询分组中的 IP 地址和 MAC 地址信息,在自己的 ARP 表中构造一条主机 A 的 IP-MAC 映射记录。
ARP 响应分组具有和 ARP 查询分组相同的构造,不同的是,发送和接受的 IP 地址恰恰相反,发送的 MAC 地址为发送者本身,目标 MAC 地址为查询分组的发送者,也就是说,ARP 响应分组只有一个目的地,而非广播。
-
主机 A 终将收到主机 B 的响应分组,提取出该分组中的 IP 地址和 MAC 地址后,构造映射信息,加入到自己的 ARP 表中。
补充说明:
- 主机 A 想要给主机 B 发送 IP 数据报,如果主机 B 的 IP-MAC 映射信息已经存在于主机 A 的 ARP 表中,那么主机 A 无需广播,只需提取 MAC 地址并构造链路层帧发送即可。
- ARP 表中的映射信息是有生存周期的,典型值为 20 分钟。
- 目标主机接收到了问询主机构造的问询报文后,将先把问询主机的 IP-MAC 映射存进自己的 ARP 表中,这样才能获取到响应的目标 MAC 地址,顺利的发送响应分组。
总结来说,ARP 协议是一个广播问询,单播响应协议。
3.3.2 不同局域网内的 MAC 寻址
路由器的多个接口都个各自维护一个 ARP 表,而非一个路由器只维护一个 ARP 表。
-
主机 A 查询 ARP 表,期望寻找到目标路由器的本子网接口的 MAC 地址。
目标路由器指的是,根据目的主机 B 的 IP 地址,分析出 B 所在的子网,能够把报文转发到 B 所在子网的那个路由器。
-
主机 A 未能找到目标路由器的本子网接口的 MAC 地址,将采用 ARP 协议,问询到该 MAC 地址,由于目标接口与主机 A 在同一个子网内,该过程与同一局域网内的 MAC 寻址相同。
-
主机 A 获取到目标接口的 MAC 地址,先构造 IP 数据报,其中源 IP 是 A 的 IP 地址,目的 IP 地址是 B 的 IP 地址,再构造链路层帧,其中源 MAC 地址是 A 的 MAC 地址,目的 MAC 地址是本子网内与路由器连接的接口的 MAC 地址。主机 A 将把这个链路层帧,以单播的方式,发送给目标接口。
-
目标接口接收到了主机 A 发过来的链路层帧,解析,根据目的 IP 地址,查询转发表,将该 IP 数据报转发到与主机 B 所在子网相连的接口上。
到此,该帧已经从主机 A 所在的子网,转移到了主机 B 所在的子网了。
-
路由器接口查询 ARP 表,期望寻找到主机 B 的 MAC 地址。
-
路由器接口如未能找到主机 B 的 MAC 地址,将采用 ARP 协议,广播问询,单播响应,获取到主机 B 的 MAC 地址。
-
路由器接口将对 IP 数据报重新封装成链路层帧,目标 MAC 地址为主机 B 的 MAC 地址,单播发送,直到目的地。
四、运输层
运输层向应用层屏蔽了下面网络的细节(如网络拓补,所采用的路由选择协议等),它使应用进程之间看起来好像两个运输层实体之间有一条端到端的逻辑通信信道。
网络层为主机提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
运输层提供应用进程之间的逻辑通信,也就是说,运输层之间的通信并不是真正在两个运输层之间直接传输数据。
运输层的端口号分为服务器端使用的端口号(0˜1023 指派给熟知端口,1024˜49151 是登记端口号)和客户端暂时使用的端口号(49152˜65535)。
- 软件端口是应用层各种协议进程与运输实体进行层间交互的一种地址。两个进程之间进行通信不光要知道对方 IP 地址而且要知道对方的端口号(为了找到对方计算机中的应用进程)。
- 虽然通信的终点是应用进程,但只要把所发送的报文交到目的主机的某个合适端口,剩下的工作(最后交付目的进程)就由 TCP 和 UDP 来完成。
4.1 基本概念
-
进程(process) :指计算机中正在运行的程序实体。
- 一台主机的进程和另一台主机中的一个进程交换数据的过程称为通信
-
停止等待协议(stop-and-wait) :指发送方每发送完一个分组就停止发送,等待对方确认,在收到确认之后在发送下一个分组。
- 为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输。流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停下来等待对方确认。这样可使信道上一直有数据不间断的在传送。这种传输方式可以明显提高信道利用率。
- 超时可以触发超时重传请求ARQ协议
- 连续 ARQ 协议可提高信道利用率。发送维持一个发送窗口,凡位于发送窗口内的分组可连续发送出去,而不需要等待对方确认。接收方一般采用累积确认,对按序到达的最后一个分组发送确认,表明到这个分组位置的所有分组都已经正确收到了。
-
TCP(Transmission Control Protocol) :传输控制协议。基本单位是段(segments)
-
UDP(User Datagram Protocol) :用户数据报协议。数据单元是数据报(datagrams)。
-
套接字和端口
- 套接字:进程通过一个为套接字的软件接口向网络发送报文和从网络接受报文。
- 如果A主机想要给B主机通讯,需要知道B主机的IP地址,同时还要知道是哪个进程,用于标识进程的标识符就是端口号。每个端口号对应一个进程。
- 套接字可理解为:IP+端口。
4.2 TCP与UDP
- UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是一种最有效的工作方式。
- TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 不提供广播或多播服务。
- 由于 TCP 要提供可靠的,面向连接的传输服务,难以避免地增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。
TCP | UDP | |
---|---|---|
连接 | 面向连接(必须先建立连接,数据传送结束后要释放连接) | 无连接 |
通信 | 每条TCP连接一对一。提供全双工通信 | 支持一对一,一对多,多对一和多对多的交互通信 |
交付 | 提供可靠交付。无差错、不丢失、不重复、并且按序到达。 | 尽最大努力交付,无拥塞控制 |
形式 | 面向字节流 | 面向报文 |
首部 | TCP 报文段的前 20 个字节是固定的,后面有 4n 字节是根据需要增加的选项。TCP 首部的最小长度是 20 字节。 | 8 字节首部开销小(只有四个字段:源端口,目的端口,长度和检验和) |
- UDP 一般用于即时通信,比如: 语音、 视频 、直播等等。这些场景对传输数据的准确性要求不是特别高,比如你看视频即使少个一两帧,实际给人的感觉区别也不大。
- TCP 用于对传输准确性要求特别高的场景,比如文件传输、发送和接收邮件、远程登录等等。
4.2.1 应用场景
运行于 TCP 协议之上的协议 :
- HTTP 协议 :超文本传输协议(HTTP,HyperText Transfer Protocol)主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。
- HTTPS 协议 :更安全的超文本传输协议(HTTPS,Hypertext Transfer Protocol Secure),身披 SSL 外衣的 HTTP 协议
- FTP 协议:文件传输协议 FTP(File Transfer Protocol),提供文件传输服务,基于 TCP 实现可靠的传输。使用 FTP 传输文件的好处是可以屏蔽操作系统和文件存储方式。
- SMTP 协议:简单邮件传输协议(SMTP,Simple Mail Transfer Protocol)的缩写,基于 TCP 协议,用来发送电子邮件。注意 ⚠️:接受邮件的协议不是 SMTP 而是 POP3 协议。
- POP3/IMAP 协议: POP3 和 IMAP 两者都是负责邮件接收的协议。
- Telent 协议:远程登陆协议,通过一个终端登陆到其他服务器。被一种称为 SSH 的非常安全的协议所取代。
- SSH 协议 : SSH( Secure Shell)是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 建立在可靠的传输协议 TCP 之上。
运行于 UDP 协议之上的协议 :
- DHCP 协议:动态主机配置协议,动态配置 IP 地址
- DNS : 域名系统(DNS,Domain Name System)将人类可读的域名 (例如,www.baidu.com) 转换为机器可读的 IP 地址 (例如,220.181.38.148)。 我们可以将其理解为专为互联网设计的电话薄。实际上 DNS 同时支持 UDP 和 TCP 协议。
4.3 TCP重点
- TCP 用主机的 IP 地址加上主机上的端口号作为 TCP 连接的端点。这样的端点就叫做套接字(socket)或插口。
- 套接字用(IP 地址:端口号)来表示。每一条 TCP 连接唯一地被通信两端的两个端点所确定。
4.3.1 三次握手四次挥手(重要)
握手
- 一次握手:客户端发送带有 SYN(SEQ=x) 标志的数据包 -> 服务端,然后客户端进入 SYN_SEND 状态,等待服务器的确认;
- 二次握手:服务端发送带有 SYN+ACK(SEQ=y,ACK=x+1) 标志的数据包 –> 客户端,然后服务端进入 SYN_RECV 状态
- 服务端传回发送端所发送的 ACK 是为了告诉客户端:“我接收到的信息确实就是你所发送的信号了”,这表明从客户端到服务端的通信是正常的。回传 SYN 则是为了建立并确认从服务端到客户端的通信。
- 三次握手:客户端发送带有带有 ACK(ACK=y+1) 标志的数据包 –> 服务端,然后客户端和服务器端都进入ESTABLISHED 状态,完成TCP三次握手。
- ACK (Acknowledge character):确认字符
- SYN(Synchronize Sequence Numbers):同步序列编号
三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。
- 第一次握手 :Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
- 第二次握手 :Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
- 第三次握手 :Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常
挥手
- 第一次挥手 :客户端发送一个 FIN(SEQ=X) 标志的数据包->服务端,用来关闭客户端到服务器的数据传送。然后,客户端进入 FIN-WAIT-1 状态。
- 第二次挥手 :服务器收到这个 FIN(SEQ=X) 标志的数据包,它发送一个 ACK (SEQ=X+1)标志的数据包->客户端 。然后,此时服务端进入CLOSE-WAIT状态,客户端进入FIN-WAIT-2状态。
- 服务器收到客户端断开连接的请求时,可能还有一些数据没有发完,这时先回复 ACK,表示接收到了断开连接的请求。等到数据发完之后再发 FIN,断开服务器到客户端的数据传送。
- 第三次挥手 :服务端关闭与客户端的连接并发送一个 FIN (SEQ=y)标志的数据包->客户端请求关闭连接,然后,服务端进入LAST-ACK状态。
- 第四次挥手 :客户端发送 ACK (SEQ=y+1)标志的数据包->服务端并且进入TIME-WAIT状态,服务端在收到 ACK (SEQ=y+1)标志的数据包后进入 CLOSE 状态。此时,如果客户端等待 2MSL 后依然没有收到回复,就证明服务端已正常关闭,随后,客户端也可以关闭连接了。
- 第四次挥手时,客户端发送给服务器的 ACK 有可能丢失,如果服务端没有因为某些原因而没有收到 ACK 的话,服务端就会重发 FIN,如果客户端在 2*MSL 的时间内收到了 FIN,就会重新发送 ACK 并再次等待 2MSL,防止 Server 没有收到 ACK 而不断重发 FIN。(第二次挥手同理)
只要四次挥手没有结束,客户端和服务端就可以继续传输数据!
TCP是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了 TCP 连接。
4.3.2 可靠性保障(6条)
- 基于数据块传输 :数据块被称为报文段或段。
- 对失序数据包重新排序以及去重:TCP 为了保证不发生丢包,给每个包一个序列号,能够将接收到的数据根据序列号排序和实现数据包去重。
- 校验和 : TCP 将保持它首部和数据的检验和。
- 超时重传 : 当发送方发送数据之后,它启动一个定时器。如果发送端实体在合理的往返时延(RTT)内未收到确认消息,那么对应的数据包就被假设为已丢失并进行重传。
- 流量控制 : TCP 连接的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议(TCP 利用滑动窗口实现流量控制)。
- 拥塞控制 : 当网络拥塞时,减少数据的发送。
二者区别:
-
流量控制解决的是发送方和接收方速率不匹配的问题,通过滑动窗口实现,控制的是发送了但未被Ack的包数量。
-
拥塞控制解决的是避免网络资源被耗尽的问题,拥塞控制是通过拥塞窗口来实现的。当出现丢包时,控制发送的速率达到降低网络负载的目的。
-
拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。
-
流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
4.3.3.1 滑动窗口
发送窗口
- 已经发送并且确认的TCP段(已经发送并确认);
- 已经发送但是没有确认的TCP段(已经发送未确认);
- 未发送但是接收方准备接收的TCP段(可以发送);
- 未发送并且接收方也并未准备接受的TCP段(不可发送)
可用窗口大小 = SND.UNA + SND.WND - SND.NXT
接收窗口
- 已经接收并且已经确认的 TCP 段(已经接收并确认);
- 等待接收且允许发送方发送 TCP 段(可以接收未确认);
- 不可接收且不允许发送方发送TCP段(不可接收)。
接收窗口的大小是根据接收端处理数据的速度动态调整的。 如果接收端读取数据快,接收窗口可能会扩大。 否则,它可能会缩小。
4.3.3.2 流量控制
TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。
- 窗口大小在特定的一次连接通信过程中,大小是不变的。而滑动窗口是一种机制,滑动窗口的大小在发送端代表的是可发送的数据大小,在接收端代表的是可接收的数据大小,它们是动态变化的。
4.3.3.3 拥塞控制
拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。
-
为了进行拥塞控制,TCP 发送方要维持一个拥塞窗口 cwnd 的状态变量。
- 拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。
- 发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个。
-
TCP 的拥塞控制采用了四种算法
- 慢开始:一开始由小到大逐渐增大发送窗口试探最大值
- 拥塞避免:每经过一个往返时间 RTT 就把发送方的 cwnd 加 1
- 快重传和快恢复(fast retransmit and recovery,FRR):没有 FRR,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。(更高效)
-
在网络层也可以使路由器采用适当的分组丢弃策略(如主动队列管理 AQM),以减少网络拥塞的发生。
4.3.4 连接管理
三个阶段:连接建立,数据传送和连接释放。
TCP 连接采用三报文握手机制。服务器要确认用户的连接请求,然后客户要对服务器的确认进行确认。
TCP 的连接释放采用四报文握手机制。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送时,则发送连接释放通知,对方确认后就完全关闭了 TCP 连接。
4.4 ARQ协议
自动重传请求(Automatic Repeat-reQuest,ARQ)是 OSI 模型中数据链路层和传输层的错误纠正协议之一
如果发送方在发送后一段时间之内没有收到确认信息(Acknoledgements,就是我们常说的 ACK),它通常会重新发送,直到收到确认或者重试超过一定的次数。
ARQ 包括停止等待 ARQ 协议和连续 ARQ 协议。
4.4.1 停止等待 ARQ 协议
停止等待协议是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认(回复 ACK)。如果过了一段时间(超时时间后),还是没有收到 ACK 确认,说明没有发送成功,需要重新发送,直到收到确认后再发下一个分组;
在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认。
出现差错情况(超时重传):
只要超过一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送过的分组丢失了)。
因此每发送完一个分组需要设置一个超时计时器,其重传时间应比数据在分组传输的平均往返时间更长一些。这种自动重传方式常称为 自动重传请求 ARQ 。在停止等待协议中收到重复分组,就丢弃该分组,但还要发送确认。
确认丢失和确认迟到
-
确认丢失 :确认消息在传输过程丢失。当 A 发送 M1 消息,B 收到后,B 向 A 发送了一个 M1 确认消息,但却在传输过程中丢失。而 A 并不知道,在超时计时过后,A 重传 M1 消息,B 再次收到该消息后:
-
- 丢弃这个重复的 M1 消息,不向上层交付。 2. 向 A 发送确认消息。(不会认为已经发送过了,就不再发送。A 能重传,就证明 B 的确认消息丢失)。
-
-
确认迟到 :确认消息在传输过程中迟到。A 发送 M1 消息,B 收到并发送确认。在超时时间内没有收到确认消息,A 重传 M1 消息,B 仍然收到并继续发送确认消息(B 收到了 2 份 M1)。此时 A 收到了 B 第二次发送的确认消息。接着发送其他数据。过了一会,A 收到了 B 第一次发送的对 M1 的确认消息(A 也收到了 2 份确认消息)。
-
- A 收到重复的确认后,直接丢弃。2. B 收到重复的 M1 后,也直接丢弃重复的 M1。
-
4.4.2 连续ARQ协议
连续 ARQ 协议可提高信道利用率。发送方维持一个发送窗口,凡位于发送窗口内的分组可以连续发送出去,而不需要等待对方确认。接收方一般采用累计确认,对按序到达的最后一个分组发送确认,表明到这个分组为止的所有分组都已经正确收到了。
优点: 信道利用率高,容易实现,即使确认丢失,也不必重传。
缺点: 不能向发送方反映出接收方已经正确收到的所有分组的信息。 比如:发送方发送了 5 条 消息,中间第三条丢失(3 号),这时接收方只能对前两个发送确认。发送方无法知道后三个分组的下落,而只好把后三个全部重传一次。这也叫 Go-Back-N(回退 N),表示需要退回来重传已经发送过的 N 个消息。
五、应用层
5.1 基本概念
-
域名系统(DNS) :域名系统(DNS,Domain Name System)将人类可读的域名 (例如,www.baidu.com) 转换为机器可读的 IP 地址 (例如,220.181.38.148)。可以理解为专为互联网设计的电话薄。
-
万维网(WWW) :WWW 是环球信息网的缩写
-
统一资源定位符(URL) :统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
-
代理服务器(Proxy Server) : 代理服务器(Proxy Server)是一种网络实体,它又称为万维网高速缓存。 代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的的请求相同,就返回暂存的响应,而不需要按 URL 的地址再次去互联网访问该资源。代理服务器可在客户端或服务器工作,也可以在中间系统工作。
5.2 常见协议
5.2.1 FTP
FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于 Internet 上的控制文件的双向传输。使用 TCP 可靠的运输服务
- 同时,它也是一个应用程序(Application)。
- 基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
- 在 FTP 的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。
简单文件传输协议(TFTP) :TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为 69。
5.2.2 TELNET(远程登录)
远程终端协议(TELNET) Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在 telnet 程序中输入命令,这些命令会在服务器上运行。要开始一个 telnet 会话,必须输入用户名和密码来登录服务器。Telnet 是常用的远程控制 Web 服务器的方法。
5.2.3 HTTP
超文本传输协议(HTTP) :超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
-
所有的 WWW 文件都必须遵守这个标准。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。
5.2.4 SMTP(发邮件)
简单邮件传输协议(SMTP) : SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。 通过 SMTP 协议所指定的服务器,就可以把 E-mail 寄到收信人的服务器上了,整个过程只要几分钟。SMTP 服务器则是遵循 SMTP 协议的发送邮件服务器,用来发送或中转发出的电子邮件。
5.2.5 POP3/IMAP(收邮件)
这两个协议没必要多做阐述,只需要了解 POP3 和 IMAP 两者都是负责邮件接收的协议即可。另外,需要注意不要将这两者和 SMTP 协议搞混淆了。SMTP 协议只负责邮件的发送,真正负责接收的协议是POP3/IMAP。
5.2.6 SSH网络安全传输协议
SSH( Secure Shell) 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 建立在可靠的传输协议 TCP 之上。
Telnet 和 SSH 之间的主要区别在于 SSH 协议会对传输的数据进行加密保证数据安全性。
5.3 HTTP重点
5.3.1 HTTP与HTTPS
- 端口号 :HTTP 默认是 80,HTTPS 默认是 443。
- URL 前缀 :HTTP 的 URL 前缀是
http://
,HTTPS 的 URL 前缀是https://
。 - 安全性和资源消耗 : HTTP 协议运行在 TCP 之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。
SSL/TLS协议
为了更好的实现和保证通信中的数据交换效率。先用非对称加密验证
带有证书的公钥传输机制:
- 设有服务器 S,客户端 C,和第三方信赖机构 CA。
- S 信任 CA,CA 是知道 S 公钥的,CA 向 S 颁发证书。并附上 CA 私钥对消息摘要的加密签名。
- S 获得 CA 颁发的证书,将该证书传递给 C。
- C 获得 S 的证书,信任 CA 并知晓 CA 公钥,使用 CA 公钥对 S 证书上的签名解密,同时对消息进行散列处理,得到摘要。比较摘要,验证 S 证书的真实性。
- 如果 C 验证 S 证书是真实的,则信任 S 的公钥(在 S 证书中)。
推荐视频:数字签名 及 数字证书 原理
5.4.2 HTTP1.0 & HTTP1.1
- 连接方式 : HTTP 1.0 为短连接,HTTP 1.1 支持长连接。
- 状态响应码 : HTTP/1.1中新加入了大量的状态码,光是错误响应状态码就新增了24种。比如说,
100 (Continue)
——在请求大资源前的预热请求,206 (Partial Content)
——范围请求的标识码,409 (Conflict)
——请求与当前资源的规定冲突,410 (Gone)
——资源已被永久转移,而且没有任何已知的转发地址。 - 缓存处理 : 在 HTTP1.0 中主要使用 header 里的 If-Modified-Since,Expires 来做为缓存判断的标准,HTTP1.1 则引入了更多的缓存控制策略例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match 等更多可供选择的缓存头来控制缓存策略。
- 带宽优化及网络连接的使用 :HTTP1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是 206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
- Host头处理 : HTTP/1.1在请求头中加入了
Host
字段。
5.4 访问网站的过程
5.4.1 地址栏输入URL
著作权归https://pdai.tech所有。 链接:https://pdai.tech/md/develop/protocol/dev-protocol-url.html
把URL分割成几个部分:协议、网络地址、资源路径。
- 传送协议: URL包含协议部分,是浏览器和www万维网之间的沟通方式,它会告诉浏览器正确在网路上找到资源位置。最常见的网络传输协议的是HTTP协议(超文本传输协议)( https则是进行加密的网络传输);其他也还有ftp 、file、 https、mailto 、git 等。还有自定义的协议(私有协议),例如tencent。不同协议有不同的通讯内容格式。
- 网络地址: 指示该连接网络上哪一台计算机,可以是域名或者IP地址,可以包括端口号;
- 资源路径: 指示从服务器上获取哪一项资源。
- eg:
- 协议部分:http
- 网络地址:www.quaro.com
- 资源路径:/question/123456/
5.4.2 DNS域名解析IP
-
域名 DN(domain name ):域名是为了识别主机名称和组织机构名称的一种具有分层的名称。 用我们熟悉的字母和数字组合来代替纯数字的 IP 地址。
- 比如我们只会记住 www.baidu.com (百度域名) 而不是 220.181.112.244(百度的其中一个 IP 地址)。
-
计算机域名系统 DNS ( Domain Name System or Domain Name Service): 它是由域名解析器和域名服务器组成的。
- 域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。 每个域名都对应一个或多个提供相同服务的服务器的 IP 地址,只有知道服务器 IP 地址才能建立连接,所以需要通过 DNS 把域名解析成一个 IP 地址。
-
查询IP:浏览器缓存 -> 系统缓存 -> 本地DNS服务器缓存
- 浏览器搜索自己的DNS缓存(维护一张域名与IP地址对应表)
- 搜索操作系统中的DNS缓存(维护一张域名与IP地址对应表)
- 搜索操作系统的hosts文件(windows环境下,维护一张域名与IP地址对应表)
- 操作系统将域名发送到本地区域服务器(LNDS),进行查找,成功则返回结果(
递归查询
),失败则发起一个迭代DNS请求(迭代查询
)- 递归查询:客户端与服务器之间属于递归查询。即当客户机想DNS服务器发出请求后,若DNS服务器本身不能解析,会向另一个DNS服务器发出查询请求,最后将结果转交给客户端的过程。 服务器必须回答目标IP与域名的映射关系。
- 迭代查询:DNS服务器之间属于迭代查询。服务器接收到一次迭代查询回复一次结果,这个结果不一定死目标IP与域名的映射关系,也可以是其他DNS服务器的地址。
- 本地域名服务器LDNS将得到的IP地址返回给操作系统,同时也将IP地址缓存起来
- 操作系统将IP地址返回给浏览器,同时将IP地址缓存起来
5.4.3 请求和响应数据
-
TCP连接建立(3握)
-
发送http 请求
-
服务端处理
-
返回http 结果
-
TCP连接关闭(4挥)
5.4.4 加载解析渲染
5.5 URI 和 URL 的区别是什么?
- URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
- URL(Uniform Resource Locator) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。
URI 的作用像身份证号一样,URL 的作用更像家庭住址一样。URL 是一种具体的 URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南