# 图解TCP/IP
标签(空格分隔): 2018招聘
---
##第1章 网络基础知识
###
### 1.1 计算机出现的背景
* **主机**:TCP/IP中能够设定IP地址的计算机叫做主机。
* **局域网v.s.广域网**
* 广域网(Wide Area Network, WAN)
* 局域网(Local Area Network, LAN)
###1.2 计算机与网络发展的7个阶段
* **计算机与网络发展的7个阶段**
* 1 批处理(Batch Processing)
* 2 分时系统(Time Sharing System,TSS):仅由终端访问服务器计算机,但是服务器计算机(此时其实还不能算作服务器)之间无法沟通
* 3 计算机之间的通信:计算机之间由通信线路相连接,此时服务器计算机之间可沟通
* 4 计算机网络的诞生
* 分组交换技术
* 窗口系统
* 5 互联网的普及
* 不仅能够内部互连
* 而且能够访问全世界
* 6 IP时代:以互联网技术为中心的时代
* 电话网->IP(Internet Protocol)网
* IP网通过IP协议实现通信、播放的统一
* 7 TCP/IP时代:从“单纯建立连接“到“安全建立连接”
###1.3 协议
* **协议**
* 协议:计算机之间通过网络实现通信时事先达成的约定。
* 协议的作用:不同设备或者结构直接可以进行通信。
* 协议如同人与人之间讲话
* 例子:A,B,C三人聊天。A只能说汉语,B说英语,C都会。
* 协议: 汉语、英语
* 通信:聊天
* 数据:说话内容
> **协议1:分组交换协议**
分组交换是指将大数据分割成一个个叫做**包(Packet)**的较小的单位进行传输的方法。
这里的包,其实就是分组,一个个包就是一个个分组。
这里的包在发送的时候,为了告诉其他设备去哪里,需要给包加上“报文首部”。(类似于邮件寄送包裹的时候的收件人和寄件人的地址)
报文首部=源主机地址+目标主机地址+分组序号+其他。(主机地址指IP地址)
###1.4 协议由谁规定
* 计算机通信的诞生及其标准化
> 发展伊始,各个公司的计算机系统所用采用的网络结构不同,支持的协议不同,导致不同厂商之间的计算机无法进行正常通信,使得网络设备的灵活性和可扩展性很差。
不同厂商之间的协议就像是方言,互相无法交流,但是TCP/IP则像普通话,使得网络设备能够交流无障碍。
* 协议标准化
* OSI标准:由ISO制定(国际标准化组织)
* TCP/IP协议:由IETF制定(业界标准)
###1.5 **协议分层与OSI参考模型**
* 协议的分层
* OSI参考模型将通信协议中必要的功能分成7层。
* 每个分层接收下一层提供的特定服务,同时负责为上一层提供特定服务。
* 上下层之间进行交互遵循的约定叫做**“接口”**;同一层之间进行交互遵循的约定叫做**“协议”**。
* **OSI参考模型**
|序号|分层|功能|
|:-:|:---:|:---|
|7|应用层|针对特定应用的协议|
|6|表示层|数据格式转换/标准化:设备本身固有数据格式与网络标准数据格式的转换|
|5|会话层|通信**管理**。负责建立和断开通信连接(数据流动的逻辑通路)|
|4|传输层|管理节点之间的数据传输|
|3|网络层|地址管理与路由选择|
|2|数据链路层|互连设备之间传送和识别数据帧(将0 1序列划分为具有意义的数据帧)|
|1|物理层|界定连接器与网线的规格|
###1.6 OSI参考模型分析
* 传输层以上:**表示层**主要负责数据的表示,即数据的标准化,**会话**层主要负责管理连接,即管理何时建立连接,何时发送数据等,但不具备实际的传输数据的功能。
> 注意:**会话层**负责决定建立和断开连接的时机,**传输层**负责进行实际的建立和断开的操作
* 会话层以下:主要进行数据的传输。
>>**网络层**负责端到端的数据传输,但是在传输过程中,可能出现数据的丢失等问题,此时,需要**传输层**负责提供正确传输数据处理。
> **网络层**与**数据链路层**都是基于目标地址将数据发送给接收端的,但是网络层负责将整个数据发送到最终地址,而数据链路层则负责发送其中的一个分段内的数据。
* 注:**MAC地址**:物理地址或硬件地址(Media Acess Control)
###1.7传输方式的分类
* 面向有连接与面向无连接
* 面向有连接:类似于打电话,必须建立通信连接;不一定分组交换
* 面向无连接:类似于寄包裹,不管对方是否存在,都可以自由的寄出;多为分组交换
* 电路交换与分组交换
* 根据接收端数量分为:
* 单播(Unicast):例如早期电话
* 广播(Broadcast):例如电视播放
* 多播(Muticast):与广播类似,但是要限定某一组主机作为接收端。例如电视会议。
* 任播(Anycast): 例如DNS根域名解析服务器
###1.8 地址
* 地址具有唯一性
* 地址具有层次性
* MAC地址不具有层次性
* IP地址具有层次性
* IP = 网络号+主机号(网络号由子网掩码标识出)
> MAC寻址:参考地址转发表(自学自动生成)
IP地址寻址:参考路由控制表(根据路由协议自动生成)
###1.9 网络的构成要素
* 搭建网络的主要设备及其作用
|设备|作用|
|:--|:--|
|网卡(NIC)|使计算机连网的设备|
|中继器(Repeater)/集线器(多口中继器)|物理层上延长网络的设备|
|网桥(Brige)/2层交换机|数据链路层转发数据帧的设备,依据:MAC地址|
|路由器(Router)/3层交换机|网络层转发分组数据的设备,依据:IP地址|
|网关(Gateway)|转换协议的设备,负责数据转发,传输层及以上|
|4~7层交换机|负载均衡器;进行宽带控制;传输层及以上|
例:图1.49
> **集线器vs.交换集线器**
集线器:是多口中继器,工作在物理层
交换集线器:是多口网桥,工作在数据链路层,也称为Hub
>
> 实现负载均衡:
1.**4~7层交换机**:负载均衡器;进行宽带控制
2.**循环复用DNS技术**:为多个IP地址配置同一个域名。
* 概念:
* 传输速率:亦称为带宽
* 指的是数据传输过程中,2个设备之间数据流动的物理速度称为传输速率。
* 传输速率指的是单位时间内传输的数据量的多少。
* 单位是bps(Bits Per Second,每秒比特数)
* 吞吐量:
* 主机之间实际的传输速率
* 单位是bps(Bits Per Second,每秒比特数)
* 衡量带宽,也衡量主机的CPU处理能力、网络拥堵程度、报文中数据字段占有份额等信息。
###1.10 现代网络实态
* 网络构成
* 核心网(骨干网) ->接入层(汇聚层)
* 物理线路与逻辑信道
* 逻辑信道相当于物理线路的虚拟化
* 虚拟化与云
##第二章 TCP/IP基础知识
###2.1 TCP/IP出现的背景及其历史
* 分组交换技术
> 使多个用户同时共享一条通信线路,提高了线路使用效率,降低了搭建线路的成本。
###2.2 TCP/IP的标准化
###2.3 互联网基础知识
* 互联网定义
* Internet:网际网
* The Internet:互联网
* 互联网的结构
* ISP:Internet Service Provider
* IX:Internet Exchange
* NOC:Network Operation Center
###2.4 **TCP/IP协议分层模型**
|序号|分层|功能|
|:-:|:---:|:---|
|4|应用层||
|3|传输层||
|2|网络层||
|1|网际接口层||
* 网际接口层
* 网络层
* IP协议: 将数据从源IP地址发送到目标IP地址。分组交换的一种协议,但是不具有重发机制。即使分组数据包未到达对端主机也不会重发。数据非可靠传输协议。
* ICMP:IP数据包在发送过程中,发生异常导致无法到达对端目标IP地址时,需要给发送端发送一个异常通知。ICMP就是为了这个功能设计的。他也可以用来诊断网络的健康状况(如`ping`).
* ARP(Address Resolution Protocol):从分组数据包的IP地址中,解析出MAC地址。
* 传输层
* TCP
* 面向连接的可靠的传输协议
* 正确处理传输过程中的丢包、传输顺序混乱等情况
* 有效利用带宽,缓解网络拥堵。
* 不利于视频会议。
* UDP
* 面向无连接的不可靠传输协议
* 应用层
* SMTP:Simple Mail Tranfer Protocol.
* MIME协议:将电子邮件从文本格式扩展到多格式(表示层)
* 文件传输
* FTP: File Tranfer Protocol.
* 二进制
* 文本格式
* FTP需要建立2个TCP连接
* 控制连接:发出传输请求
* 数据连接:实际传输数据时。
* 这2个连接都是会话层
* 远程登陆
* TELNET
* SSH
* 网络管理
* SNMP:Simple Network Management Protocol, 管理网络
###2.5 TCP/IP分层模型与通信实例
|序号|分层|数据单位|地址|
|:-:|:---:|:---|---|
|1|数据链路层|数据帧|MAC地址:确定路由器|
|2|网络层|数据报|IP地址:确定主机|
|3|传输层|数据段|端口号:确定应用程序|
|4|应用层|消息||
* 包:可以指数据帧、数据报、数据段、消息。
* 数据包的首部:包含的是协议的规范。
* 数据传输过程如图2.18所示
* 数据包如图2.19所示
##第三章 数据链路层
###3.1数据链路的作用
* 物理层vs.数据链路层的作用(续)
* 物理层:将电压等模拟信号转换为二进制的0、1
* 数据链路层:将二进制的0、1封装成帧,进行传输。
* 数据链路层的相关技术
* MAC寻址
* 介质共享
* 非公有网络
* 分组交换
* 环路检测
* VLAN(Virtual Local Area Network, 虚拟局域网)
* 以太网
* WLAN(Wireless Local Area Network, 无线局域网)
* PPP(Point to Point Protocol, 点对点协议)
* 数据链路的段
* 网络拓扑
* 总线型
* 环型
* 星型
* 混合型
###3.2数据链路的相关技术
* MAC寻址
* 作用:MAC地址用于识别数据链路中互连的节点
* 规范:
* IEEE802.3(以太网(CSMA/CD)的规范)
* IEEE802.11(WLAN)
* MAC地址:
* 48位二进制/12位十六进制
* 根据MAC地址转发
* 交换集线器(也叫以太网交换机)
* 交换机的自学原理
* 交换机的转发方式:
* 存储转发
* 直通转发
* 共享介质型网络
* 概念:多个设备共享一个通信介质的网络。(常用半双工)
* 介质访问控制方式:
* 争用方式
* 概念:争夺获取传输数据的权力,即CSMA(载波监听多路访问)
* 原理:以先到先得的方式占用信道发送数据。
* 改进:CSMA/CD
* 令牌传递方式
> **技术1:CSMA/CD方式**
1.若载波信道上没有数据流动,则任何站都可以发送数据。
2.检查是否发生冲突。一旦发生冲突,先发送一个阻塞报文,然后放弃发送数据帧,随机延时一段时间之后,重发。
* 非共享介质网络
* 概念:对介质采取专用的一种传输控制方式。网络中的每个站直接连通交换机,由交换机负责转发数据帧。 (常用全双工)
* 环路检测技术
* 问题:数据帧在环路中会不断的被转发,当数据帧积累到一定程度的时候会造成网络瘫痪,因此需要搭建合适环路,分散网络流量,提高容灾能力。
* 环路检测技术(消除环路):
* 生成树方式:禁止某个端口,发生问题时,启用该端口绕行。
* 源路由法
* VLAN
* 原理:网桥(实现了VLAN技术的2层交换机)按照端口划分了不同的网段,区分广播数据传播的范围、减少了网络负载提高了网络的安全性。
* 实质:在数据链路上对网络实现了层次性。
**以下介绍几种数据链路**
###3.3 以太网
> **协议2:以太网是什么?**
以太网是一种规范。规定了数据链路需要的传输介质、传输速度等。
* 以太网帧格式
* 组成:前导码+目标MAC+源MAC+类型+数据(46~1500字节)+FCS(帧检验序列)
* 前导码:表示帧的开始,也是对端网卡能够确保与其同步的标志
* 类型:上层协议类型
* 0800:IP
* 0806:ARP
* 8035:RARP
* 86DD: IPv6
* FCS:检查帧是否损坏。
> 数据链路层可细分为:MAC(介质访问控制层)、LLC(逻辑链路控制层)
###3.4 无线通信
* 分类
* 标准:IEEE 802.11
###3.5 PPP
> **协议3:PPP(Point-to-Point protocol, 点对点协议)**
PPP是纯粹的数据链路层协议,与物理层没有任何关系。(而以太网是物理层和数据链路层都涉及的协议,规定了0和1被物理层解释为何种电子信号)PPP协议的使用,要求物理层通畅,但是不管物理层是使用的什么介质,采用的什么协议。
例如:ADSL/PPPoE(PPP OVER ETHERNET)
* 包括2个协议:
* LCP(Link Control Protocol):不依赖上层;主要负责建立断开连接、设置最大接收单元(MRU)、设置验证协议以及设置是否进行通信质量的监控。
* NCP(Network Control Protocol):依赖上层;负责IP地址设置、是否进行TCP/IP首部压缩等设备。
* PPP帧格式:标志码(字节)+地址+控制+类型+数据(0~1500)+FCS+标志
###3.6 其他数据链路
* ATM、FDDI等
##第四章 IP协议
> IP协议主要负责将数据包发送给最终的目标计算机。
###4.1 IP:网际协议
> 主机与节点
-**主机:**配置有IP地址,但是不进行路由控制的设备
-**路由器:**配置有IP地址,进行路由控制的设备
-**节点**:主机和路由器的统称。
-**注:**我们简单地将具有IP地址的设备称为主机。
* 数据链路层 vs 网络层
* 网络层的作用:实现终端节点之间的通信。(点对点通信)
* 数据链路层作用:在同一种数据链路的节点之间进行数据包的传递
* 不同:数据链路层:负责一个相同区段内的通信,而网络层负责多个不同区段内的通信。
* 数据链路层:提供直连的2个设备之间通信功能。
* 网络层:负责在没有直连的两个网络之间进行通信传输。
> 例:图4.2: 行程表 vs 机票火车票
行程表(网路层):告诉人怎么走,该做什么车,该在哪里换乘。
机票火车票(数据链路层):实现某个段内的走法,飞机还是火车。
###4.2 IP基础知识
> IP分为三大作用模块:IP寻址、路由(最终节点为止的转发)以及IP分包和组包。
* IP地址
* 1 IP地址属于网路层地址
* 2 MAC地址vsIP地址
* MAC地址:用来标识同一个链路中不同计算机的一个标识码。
* IP地址:用于在“连接到网络中的所有的主机中识别出进行通信的目标地址”。因此TCIP/IP通信中所有节点(主机或者路由器)都需要设定IP地址
* 路由控制
* 概念:将分组数据发送到最终目标地址的功能。
* Hop:跳,指网络中的一个区间。
* 多跳路由:也称作IP路由,是指路由器或者主机在准发IP数据包时,只指定下一个路由器或者主机,而不是将到达最终目标的所有通路全部指定出来。
* IP数据包的传输:
> 例2:快递:
IP数据包:如包裹。
数据链路:如货车。
* 路由控制表(Routing Table):记录IP数据包下一跳的路由器。
* 数据链路的抽象化
* IP是多个数据链路之间通信的协议。
* IP的一个重要作用:对不同数据链路之间的不同特性进行抽象,例如数据链路的地址可以被抽象成IP地址。
* 不同数据链路层有个最大区别:最大传输单位(Maximum Transmission Unit, MTU)不同。就像人们在邮寄包裹时有各自的大小限制。
* IP抽象化数据链路:IP层解决这个问题的时候,进行分片处理。将超过某段数据链路MTU的数据包拆分成多个较小的包。然后到了目标地址之后,组合回去。在IP的上层看,完全忽略了数据包在图中的各个数据链路上的MTU,只需要按照源地址发送的长度接收数据包。这样的话,IP不受限于不同数据链路的MTU。(因为不同的数据链路层的MTU不尽相同,IP的抽象能力将不同的MTU给屏蔽了。这种屏蔽是通过将MTU切割实现的。)
* IP面向无连接
* IP面向无连接:在发包之前,不需要与目标地址建立连接。
* 为啥?
* 简化
* 提速
* 注:需要连接时,可以委托上一层实现,如TCP
- IP提供尽力服务:为了把数据包发送到最终目标地址,尽最大努力。(并不做““最终收到与否的验证”)。可能发生丢包、错位以及数据量翻倍等问题。
- TCP保证对端主机确实收到数据。
> 为什么分层?
-实现简单,利于实现
-便于扩展和性能优化
###4.3 IP地址的基础知识
> IP地址用于识别主机和路由器。
* IP地址定义
* IP地址(IPv4地址)
* 32位正整数表示
* 计算机内部以二进制的形式被处理
* **点乘十进制:** 32位-> 8位一组,以`.`隔开->分别转换为十进制
* IP地址总数:$2 ^{32} = 4294967296$,即最多可以允许43亿台主机连接到网络。
* 通常,每台主机每个网卡(NIC)都得设置IP地址。
* 一台主机至少可以设置一个IP地址。
* 一台路由器可以设置2个以上IP地址
* 一块网卡可以设置2个以上IP地址
* IP地址组成
* IP地址=网络标识+主机标识=网络地址+主机地址
* 相同网段网络标识必须一致
* 不同网段则必须不同
* **网络地址表示全网中子网的位置。**
* IP地址的分类
* A B C D 四类
|类型|特征|网络地址|范围|
|--|--|--|--|--|
|A类地址|0xxx xxxx|前8位|0.0.0.0~127.0.0.0|
|B类地址|10xx xxxx|前16位|128.0.0.1~191.255.0.0|
|C类地址|110x xxxx|前24位|192.168.0.0~239.255.255.0|
|D类地址|1110 xxxx|前32位|224.0.0.0~239.255.255.255|
> 注:
1.ABC类地址网络地址之后的均为主机地址
2.D类地址没有主机地址,主要用于**多播**。
3.分配主机地址的时候,主机地址不能全部为0或者1,因为:
全部为0在表示对应的网络地址或者IP地址不可知的情况下使用。
全部为1的主机地址通常用与广播。
4.主机地址个数:$count = 2 ^ {主机地址位数}$
* 广播
* 作用:用于同一个链路中相互连接的主机之间发送数据。
* 广播地址:主机地址全部为1.例如 网络地址为192.168.0.0/24,广播地址为:192.168.0.255/24。
* 分类
* 本地广播:不会通过路由器转发
* 直接广播:通过路由器转发
* IP多播
* 作用:用于将包发送给特定组内的所有主机
* 协议:IP协议(不可靠传输)
* IP多播vs.广播
* 广播:发送给网段内所有主机,路由器不转发广播的包
* 多播:发送给特定组内主机,路由器复制多播的包
* 多播地址
* 多播使用D类地址。 多播地址+组编号=(1110)+ 组编号
* 子网掩码
* 作用:细分ABCD类IP地址。灵活指定网络地址的长度,不再受分类限制。
* 2种表示
|地址|表示1|表示2:后缀法
|--|--|--|
|IP地址|172.20 .100. 52|172.20 .100. 52 /26|
|子网掩码|255.255.255.192|
|网络地址|172.20 .100. 0|172.20 .100. 0 /26|
|子网掩码|255.255.255.192|
|广播地址|172.20 .100. 63|172.20 .100. 63 /26|
|子网掩码|255.255.255.192|
* 全局地址与私有地址
* 全局IP(公网IP)
* 私有IP
* NAT(转换公有和私有IP)
* 解决IPv4地址耗尽的问题:
* 私有IP+NAT技术
###4.4 路由控制
> 发送数据包时,所使用的地址是IP地址。但是光有IP地址,不足以实现将数据包发送到对端目标地址的目的,在数据发送过程中,还需要类似于“指明路由器或者主机”的信息。保存这种信息的是**路由控制表。**
> 路由控制表的形成方式有2种:
1.手动设置(静态路由控制)
2.路由器之间相互交换信息时,自动刷新(动态路由控制)
注:在交换信息时,路由器之间要设置好**路由协议**,保证正常获取路由控制信息。
> 路由控制表: 记录 IP地址 -> 下一个路由器 的匹配信息
* IP地址与路由控制
* IP地址的网络地址由于进行路由控制。
* 默认路由
* 标记:default/ 0.0.0.0/0
* 注:0.0.0.0的IP地址是:0.0.0.0/32,注意二者不同
* 路由表中任何一个地址都能与之匹配
* 主机路由
* 标记:IP地址/32
* 用于不希望通过网络地址路由的情况
* 环回地址
* 同一台计算机上的程序之间进行网络通信时所使用的的默认地址。
* 127.0.0.1 / localhost(主机名)
* 路由控制表的聚合
* 减少负载,提高效率
### 4.5 IP分割处理与再构成处理
* **IP抽象化**
* IP抽象化:屏蔽了数据链路层MTU不同的限制。
* 如何实现:IP报文分片
* IP报文分片与重组
* 执行者:路由器
* 路径MTU发现
* IP报文分片机制的缺陷:
* 路由器负荷太重
* 分片处理中,一旦某个分片丢失,则会造成整个IP数据包作废
* 路径MTU发现技术
* 路径MTU(Path MTU): 指从发送端主机到接收端主机之间不需要分片时最大MTU的大小。(即路径中存在的所有数据链路层中最小的MTU)
* 路径MTU发现:发送主机按照Path MTU的大小将数据包分片后进行发送。
* 路径MTU发现实现原理
###4.6 IPv6
* 作用:解决IPv4地址即将耗尽的问题
* 组成:128位=8组16进制数
* 分类:
* 全局单播地址
* 链路本地单播地址
* 唯一本地地址
* 分段处理
###4.7 IPv4首部
> 通过IP通信时,需要在数据的前面加入IP首部信息。
IP首部中包含用于IP协议进行发包控制时所有的必要信息。
* IP数据报 = IP首部+IP载荷(数据)
* IP首部
* 版本
* 首部长度
* 区分服务(TOS:Type of Service):表明服务质量(没有建树)
* 总长度:IP数据报的长度($max = 2^{16} = 65535$ 字节)
* 标识:用于分片重组,表示不同分片
* 标志:表示包被分片的相关信息。
* 片偏移:用于标识每一个分片的顺序
* 生存时间(TTL:Time To Live):实际中,表示可以中转多少个路由器。
* 协议:表明上一层隶属于哪个协议。
* 首部校验和:确保IP数据报不被破坏。
* 源地址
* 目标地址
* 可选项
* 填充
###4.8 IPv6首部
* IPv6数据报 = IP首部+载荷
* IPv6首部
* 版本
* 通信量类:相当于TOS
* 流标号:服务质量控制
* 有效载荷长度:包的数据部分长度
* 下一个首部:相当于协议字段。表示上一层协议是TCP还是UDP。但是在IPv6中表示扩展首部的协议类型
* 跳数限制:相当于TTL.
* 源地址
* 目标地址
* 扩展首部
##第五章 IP协议相关技术
> IP协议旨在让最终目标主机收到数据包,但是仅有IP协议是无法通信的。还需要解析主机名称和MAC地址的功能,以及数据包在发送过程中异常处理的功能。
###5.1 仅凭IP无法完成通信
###5.2 DNS
> 平常访问网站时,一般不使用用IP地址,而使用域名。**DNS则将域名转换为IP地址**。
* IP地址不便记忆
* 主机识别码:为每一台计算机赋予唯一的主机名,网络通信时,就可以直接使用主机名称,而不需要IP地址。
* 系统能将主机名转换为具体的IP地址。这个功能的实现,依赖于一个名为**hosts**的数据库文件。
* DNS系统
* DNS系统:管理主机名(域名)和IP地址之间对应关系的系统。
* 原理:用户输入域名时,DNS会自动检索注册了域名和IP地址的数据库,定位对应的IP地址。
* 域名的构成
* 域名:为了识别主机名称和组织机构名称的一种具有分层的称呼。
* DNS分层结构
* 树形结构
* root
* 1.顶级域名:国别顶级域名、通用顶级域名等
* 2....
* 域名服务器:管理域名的主机和相应的软件,管理所在分层(**ZONE**)的域的相关信息。
* 根域名服务器: 此服务器下注册着根以下第1层域名服务器的IP地址。
* 域名和域名服务器均为分层设置。
* DNS解析器:进行DNS查询的主机和软件。如用户所使用的工作站或者个人电脑。
* DNS查询(query)
* 例如:kusa.co.jp域中的主机peper访问域名`www.ietf.org`
* ① 向DNS服务器查询IP地址
* ② 由于kusa的DNS服务器不知道`www.ietf.org`的IP地址,它向根域名服务器请求进行查询。
* ③ 根域名服务器知道`www.ietf.org`的IP地址在那个域名服务器(ietf.org服务器),返回该服务器的地址。
* ④ kusa的DNS服务器去返回的地址处查询`www.ietf.org`的IP地址。
* ⑤ ietf.org域名服务器将该IP地址返回kusa的域名服务器,kusa的域名服务器将IP地址返回给pepper
* ⑥ pepper与`www.ietf.org`通信。
* DNS如同互联网中的分布式数据库
> **协议4:DNS协议**
DNS协议主要是用于将域名解析为IP地址。
###5.3 ARP
> 进行数据链路层传输时,需要知道MAC地址。ARP协议则从IP地址中解析出MAC地址。
* ARP概要
* ARP:一种解决地址问题的协议
* 作用:以目标IP地址为线索,用来定位下一个应该接受数据分包的网络设备对应的MAC地址。若目标主机不在一个链路上,则可以通过ARP查找下一跳路由器的MAC地址。
* 注:仅使用与IPv4。(ICMPv6/IPv6)
* ARP的工作机制
* 原理:ARP借助ARP请求和ARP响应2种类型的包确定MAC地址的。
* ARP表:记录IP地址-MAC地址的映射
* RARP协议
* 作用:从MAC地址定位IP地址。
* 原理:RARP借助RARP请求和RARP响应2种类型的包确定IP地址的。
> **协议5:ARP协议**
ARP协议主要作用是根据IP地址确定下一跳到达的网络设备的MAC地址。
> **协议6:RARP协议**
RARP协议根据MAC地址确定IP地址。
###5.4 ICMP
* 辅助IP的ICMP(IP层)
* 主要功能
* 确认IP数据包是否成功抵达目标地址
* 通知在发送过程中IP包被废弃的具体原因
* 改善网络设置
* ICMP消息
* 分类
* 通知出错原因的错误消息
* 用于诊断的查询消息
* 主要的ICMP消息
* ICMP目标不可达消息
* ICMP重定向消息
* ICMP超时消息:`traceroute`(/`tracert`)命令就是利用这个消息实现的
* ICMP回送消息:`ping`
* ICMPv6
* IPv4:ICMP仅辅助支持IP通信。
* IPv6:没有ICMP,无法通信
> **协议7: ICMP协议**
ICMP主要用于辅助IP协议通信,其主要功能是确认IP数据包是否成功抵达目标地址,通知在发送过程中IP包被废弃的具体原因,改善网络设置。
`ping`命令就是利用ICMP协议的ICMP回送消息实现的。
###5.5 DHCP
* DHCP实现即插即用
* 作用:
* 实现自动设置IP地址
* 统一管理IP地址分配
* DHCP的工作机制
* 条件:DHCP服务器(一般该网段的路由器充当)
* DHCP分配IP地址有2种方法
* DHCP服务器在特定IP地址中自动选择一个分配
* 针对MAC地址分配一个固定IP地址。
* 需要检查要分配和已分配的IP地址是否可用
* DHCP服务器
* DHCP客户端
* DHCP中继代理(多为路由器)
* 作用:管理DHCP,统一分配和管理IP地址
> **协议8:DHCP协议**
用于自动统一分配和管理IP地址
###5.6 NAT
* NAT定义
* NAT(Network Address Translator):用于在本地网络中使用私有地址,在连接互联网时,转而使用全局IP地址(公有地址)的技术。
* NAPT:转换TCP/UDP端口号技术。
* 作用:
* 实现一个全局IP地址与多个主机的通信。
* 本质是为了解决IPv4地址即将耗尽的问题
* NAT工作机制
* NAT路由器:负责将IP地址在公有和私有之间转换(转换表自动生成)
* NAT-PT/NAPT-PT
* 作用:IPv6首部与IPv4的首部互相转换。 / 翻译IP首部与端口号
###5.7 IP隧道
* 定义:
* IP隧道是指在网络层的首部后面继续追加网络层首部的通信方法。
如: | 数据 | TCP首部 | IP首部(6)| IP首部(4)
###5.8 其他IP相关技术
* IP多播相关技术
> **协议9:IGMP协议**
IGMP(Internet Group Management Protocol)的一个重要功能是MLD(多播监听发现),其2大作用是:
1. 向路由器表明想要接受多播消息(通知多播地址)
2. 向交换机通知想要接收的多播的地址(IGMP探听)
* IP任播
* 应用
* 110/119
* DNS根域名服务器
* 原理: 多个服务器设置同一个IP,客户端发送请求时,由最近的服务器处理。
* 通信质量控制
> **协议补充1:RSVP协议**
用于通信质量控制
* 显式拥塞通知
* Mobile IP
##第六章 TCP与UDP
> 传输层的2个主要协议:TCP/UDP
###6.1 传输层的作用
* 传输层定义
> 网络层IP首部标识其上层传输层采用的是哪一种传输协议。根据这个协议号,可以识别IP传输的的数据是TCP还是UDP。
同样的,TCP/UDP中,也有这样的字段表明其所传输的数据发给了哪个应用。即**端口**。
以包裹为例。邮递员根据收件人地址向目的地投递包裹。包裹到达目的地以后由对方根据包裹信息(例如姓氏)判断最终的接收人。
在这里,邮递员=IP,收件人地址=目标IP地址,包裹=IP数据报,对方=传输层协议,最终接收人=接收端应用程序,姓氏=应用程序
在这里,识别特定应用程序,则需要通过**端口号**来识别。之后,对应端口的应用层协议去处理传输协议传来的数据。
* 通信处理
* 2种传输层协议:TCP/UDP
|协议|TCP|UDP|
|--|--|--|
|面向连接|是|否|
|可靠性|可靠|不可靠|
|特点|顺序控制 重发控制 流量控制 拥塞控制|数据报协议|
|应用场景|有必要实现可靠传输|高速传输 实时传输;如多播 广播 RIP DHCP|
###6.2 端口号(或者称为程序地址)
* 定义
|序号|层次|地址类型|作用|
|--|--|--|--|
|1|数据链路层|MAC地址|识别同一链路中不同的计算机|
|2|网络层|IP地址|识别TCP/IP网络中不同的主机和路由器|
|3|传输层|端口号|识别同一台计算机中进行通信的不同引用程序|
* 常见的端口
|应用层协议|端口|
|--|--|
|HTTP|80|
|FTP|20/21(Data/Control)|
|SSH|22|
|Telnet|23|
|SMTP|25|
|DNS|53|
|HTTPS|443|
注:HTTPS: HTTP over TLS/SSL
* 通过IP地址、端口号、协议号(标识是TCP还是UDP)进行通信识别
* 识别一个通信需要:
* 源IP,目标IP,协议号,源端口号,目标端口号所有都相同。
* 端口号如何确定?
* 标准既定的端口号(静态方法) (0~49151)
* 知名端口号(0~1023),见上表:常见端口
* 时序分配法(动态方法)(49152~65535)
* 端口号与协议
###6.3 UDP协议
* UDP
* UDP(User Datagram Protocol,用户数据报协议)
* 特点:UDP利用IP提供面向无连接的不可靠的通信服务,不提供复杂控制机制,流量控制机制以及拥塞控制机制,仅实现基本的传输功能。
* 应用场景
* 包总量较少的通信(**DNS**, SNMP等)
* 视频、音频等多媒体通信(即时通信)
* 限定于LAN等特定网络的应用通信
* 广播通信(广播多播)
###6.4 TCP协议
* TCP
* 传输控制协议
* 特点:面向连接的可靠的通信服务。实现重发控制,顺序控制等完整的控制功能。
* TCP如何保证可靠传输?
> TCP通过校验和、序列号、确认应答、重发控制、连接管理以及窗口控制等实现可靠传输。
* 通过**序列号**和**确认应答**提高可靠性
* 确认应答:TCP中,当发送端数据发送到接收机主机时,接收端主机会返回一个**已收到消息的通知**,这个消息叫**确认应答(ACK,Positive Acknowledgement)**。
TCP通过肯定的**ACK**实现可靠数据传输。
若在一定的时间(**特定时间间隔**)内,发送端未收到ACK,则认为数据丢失(**也可能是ACK丢了**),重发。
* 序列号:发送数据的每一个字节的顺序编号。也指字节之间的分隔。
* 确认应答号:下次要发送的数据的起始序列号。
注:MSS:报文最大长度。
* 重发超时如何确定?
* 重发超时:指在重发数据前,等待ACK到达之前的那个**特定时间间隔**。
* RTT: Round Trip Time, 报文段往返时间
* $重发超时= RTT + 抖动 + \delta$
* **连接管理**
* TCP面向连接,因此通信开始之前,需要建立连接。
* 建立连接:三次握手
* 断开连接:四次挥手
> **建立连接:三次握手**
> **断开连接:四次挥手**
* TCP以段为单位发送数据
* MSS: 在建立TCP连接的同时,也可以确定发送数据包的单位,称为“最大消息长度”(MSS, Maxmium Segment Size)。最理想的MSS等于IP中不会被分片处理的最大数据长度。
* TCP在传输数据时,以MSS为单位传输。重发是也以MSS为单位传输。
* 三次挥手时,通过SYN包确认MSS大小。
* 利用**窗口控制**提高传输速度
* 问题:TCP若每发一个段进行一次ACK,则通信性能太低。
* 解决:因此引入了**窗口**的概念,改成以更大的单位为间隔进行ACK。因此转发时间也大幅缩短。此时,发送端可以不必等到收到ACK之后,再发送数据,而是一直发送。
* 滑动窗口的大小由接收端控制。见**流控制**。
* 缓存区
* 窗口控制与**重发控制**
* 某些确认应答丢失:不用重发,只需要通过下一个ACK确认就可以了。
* 某个报文段丢失:接收端会发送ACK给发送端,要求其发送丢失的报文段,当同一个ACK发送次数超过3次,发送端则进行重发。这种方式比之前的超时管理更高效,故称为**高速重发控制**。
* **流控制**
* 问题:如果接收端无力接收,而发送端还在发送,则会造成网络流量的浪费。
* 解决:TCP提供一种可以让发送端根据接收端实际接受能力控制发送的数据量的机制。这就是所谓的**流控制**。
* 原理:接收端主机向发送端通知自己可以接收数据的大小,发送端就发送不超过这个限度的数据。此限度就称为**窗口大小**。