《计算机网络 - 自顶向下方法》阅读笔记
应用层、运输层、网络层、数据链路层
计算机网络和因特网:
-
因特网:
是一个世界范围的计算机网络,互联了全世界的计算机设备
-
计算机设备:手机,电脑,游戏机,电视等
-
所有这些设备都称为主机 (host )或端系统(end system)
- 端系统通过通信链路 和分组交换机 连接在一起
- 通信链路 :
- 通信链路由不同类型的物理媒体组成,这些媒体包括电缆、铜线、光纤
- 链路的传输速率单位 是bit/s(bps)
- 分组交换机 :
- 一端向另一端发送数据时,会将数据分段 ,每段加上首部字节
- 由此形成的信息包 称为分组 ,分组通过网络发送到目的端系统,在那里被装配成原始数据
- 分组交换机分为路由器 和链路层交换机
- 链路层交换机 用于接入网 中,路由器 用于网络核心中
- 一个分组经历 的一系列通信链路和分组交换机称为通过该网络的路径
- 通信链路 :
- 端系统通过通信链路 和分组交换机 连接在一起
-
端系统通过因特网服务提供商 (Internet Service Provider, ISP)接入因特网
- 每个ISP 是由多个分组交换机和多段通信链路组成 的网络
-
TCP和IP是因特网中最重要的协议。IP协议定义了路由器和端系统之间 发送和接受的分组格式。这两统称TCP/IP簇
-
-
分组交换 中的时延 、丢包 和吞吐量:
- 时延:
- 处理时延:
- 检查分组首部 和决定该分组导向何处所需时间,还包括其他
- 排队时延:
- 等 前面的分组发送,然后轮到自己的等待时间
- 传输时延:
- 将所有bit推(传输)向链路所需要的时间
- 传播时延:
- 从该链路的起点到路由器B的传播所需时间
- 丢包 :
- 排队队列 的缓存是有限 的,当排队的分组占满了队列,那么装不下 的分组就只有丢了
- 吞吐量 :
- 其实就是文件传送的速率(bps)
应用层:
-
进程通过一个称为套接字(socket )的软件接口向网络发送报文和从网络接收报文
-
应用程序开发者可以控制套接字在应用层端 的一切,但对套接字的运输层端几乎没有控制权
-
应用程序开发者对运输层的控制仅限于:
- 选择运输层协议
- 设定几个参数:最大缓存、最大报文长度等等
#### HTTP(超文本传输协议):
* HTTP使用TCP作为它的支撑运输协议
* HTTP不保存客户的任何信息,所以说HTTP是一个**无状态**协议
* HTTP**默认**是使用持续连接,也可以非持续连接
* 如果一条连接经过一定的时间间隔仍未被使用,HTTP服务器就关闭该连接。
* HTTP默认是带**流水线** 的持续连接(**批量**的请求和响应)
* 请求报文
* 响应报文
#### FTP(文件传输协议):
* 为使用户能访问它的远程**账户** ,用户必须提供一个**用户标识** 和**口令**
* 也是基于TCP传输
* FTP与HTTP的显著区别是:
* FTP使用了**两个并行** 的**TCP** 连接来传输文件,一个是**控制连接** ,一个是**数据连接**
1. **控制连接** 用于两主机之间**传输控制消息**,用户标识、口令、改变远程目录的命令、以及存放和获取的命令
2. **数据连接** 用于**实际发送一个文件**
* 因为FTP协议使用了一个**独立** 的控制连接,所以我们也称FTP的控制信息是**带外**(out-of-band)传送的。
* HTTP协议是在传输文件的**同一个** TCP连接中发送请求和响应首部行的,因此HTTP可以说是**带内**(in-band)发送控制信息的
* 开始FTP会话时,客户端首先在服务器**21号端口** 与服务器端发起一个用于**控制**的TCP连接
* FTP的客户端也通过**控制连接**发送用户的标识和口令,发送改变远程目录的命令
* 当服务器从该连接上收到一个文件传输的命令后,就发起一个到客户端的TCP数据连接
* FTP在该数据连接上准确地传送一个文件,然后关闭该连接。
* 如果用户需要传输另一个文件,FTP则打开另一个数据连接
* 对FTP传输而言,控制连接**贯穿了整个用户会话期间** ,但是对会话中的每一次文件传输都需要建立一个**新的** 数据连接(**数据链接是非持续的**)
* **控制连接是持续的**,FTP服务器在整个会话期间保留用户的状态
* FTP需要对每个进行中的**用户会话的状态信息** 进行**追踪** ,大大**限制了** FTP同时维持的**会话总数**。(HTTP是无状态的,无需对任何用户状态进行追踪)
#### SMTP(简单邮件传输协议):
* 一个典型的邮件发送过程是:从发送方的**用户代理** 开始,传输到**发送方** 的**邮件服务器** ,再传输到**接收方** 的**邮件服务器** ,然后在这里被**分发** 到接收方的**邮箱**中
* 如果发送方的服务器不能将邮件交付给接收方的服务器,发送方的邮件服务器在一个**报文队列** 中保持该报文并在以后**尝试再次发送**
* 通常每30min进行一次尝试,如果几天**都没有成功** ,那么服务器会**删除** 该报文并以电子邮件的形式**通知**发送方
* SMTP也是利用的TCP协议
* SMTP是因特网电子邮件应用的核心
* SMTP一般**不使用中间** 邮件服务器发送邮件,都是**直连**
* HTTP和SMTP都是使用**持续连接**
* HTTP和SMTP的区别:
1. HTTP是**拉**协议(pull),用户使用HTTP从服务器拉取信息,TCP连接是由想接收文件的机器发起的;
SMTP是**推**协议(push),发送邮件服务器将文件推向接收方服务器,TCP连接是由要发送该文件的机器发起的
#### 邮件访问协议(POP3、IMAP、HTTP):
* 邮件访问协议是拉协议,解决了SMYP的难点
*
#### POP3:
* 极为**简单** ,故**功能有限**
* POP3用来将邮件从**接收方的邮件服务器** 拉取到**接收方的用户代理**
* 当用户代理(客户)打开一个到邮件服务器110端口的TCP连接,POP3就开始工作
* 随着建立TCP连接,POP3按照三个阶段进行工作:
1. **特许**:
用户代理发送(以明文方式)用户名和口令 以鉴别用户
2. **事务处理**:
用户代理**取回报文**;
同时在这个阶段,用户代理还能进行如下操作,对报文做**删除标记** ,**取消标记** ,**获取邮件的统计信息**
3. **更新**:
客户发送quit命令后,**结束** 改POP3会话时,**删除被标记的邮件**
*
#### IMAP(因特网邮件访问协议):
* 比POP3**更复杂**
* IMAP服务器把**每个报文与一个文件夹联系起来**;当报文第一次到达服务器就会与收件人的INBOX文件夹相关联
* 还为用户提供了在远程文件夹中**查询邮件**的命令
* 与POP3不同,IMAP**维护了会话的用户状态信息**
* IMAP允许用户代理获取报文组件的命令
*
#### 基于Web的电子邮件(HTTP):
* 用户代理就是浏览器
#### DNS(Domain Name System ,域名系统):
* 提供主机名到IP地址的转换(映射)
* DNS是:
1. 一个由分层的DNS服务器实现的**分布式数据库**
2. 一个使得主机能够查询分布式数据库的**应用层的协议**
* DNS服务器通常是运行BIND的软件UNIX机器
* DNS协议运行在**UDP之上**,使用53号端口
* DNS服务器是以层次方式组织:
* **根**DNS服务器:
一共13台
* **顶级域**服务器:
com, net, edu, gov...
* **权威**DNS服务器
* DNS广泛使用**缓存**技术,改善了时延性能,并减少在因特网上到处传输的DNS报文数量
* 当DNS服务器收到一个DNS回答(如主机名到IP地址的映射...)时,它能将回答中的信息缓存在本地存储器中
* 这个映射的缓存不是永久的,DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息
* 共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record, RR),RR提供主机名到IP地址的映射
* 每个DNS**回答报文** 包含了**一条或多条RR**
* RR格式:(Name, Value, Type, TTL)
* TTL为**生存时间**
* Name和Value的值**取决于Type**
1. 如果Type=A,则Name是主机名,Value是该主机名对应的IP地址
2. 如果Type=NS,则Name是个域(如foo.com),而Value是个知道该域中主机IP地址的权威DNS服务器的主机名
3. 如果Type=CNAME,则Value是别名,Name为对应的规范主机名
4. 如果Type=MX,则Value是别名,Name为对应的规范主机名
* 查询和回答报文是一样的格式
运输层:
-
运输层协议为运行在不同主机上的应用进程之间 提供了逻辑通信功能
-
从应用程序角度上看,通过 逻辑通信,运行不同进程的主机好像 直接相连
-
应用进程使用运输层提供的逻辑通信功能彼此发送报文,而无需考虑 承载这些报文的物理基础设施的细节
-
运输层协议是在端系统中实现的而不是在路由器中实现
-
将应用报文划分 为较小的块,并为每块加上一个运输层首部 以生成运输层报文段 。网络层将其封装成数据报 ,并向目的地发送
-
路由器仅作用于该数据段的网络层字段,不检查运输层报文段
-
UDP(用户数据报协议 )为调用它的应用程序提供一种不可靠、无连接的服务
-
TCP(传输控制协议 ),为调用它的应用程序提供一种可靠、面向连接的服务
-
IP(网际)协议 ,为主机之间 提供了逻辑通信 。IP的服务模型是尽力而为交付服务
- IP协议不保证报文段的交付,,不保证报文段的按序交付,不保证报文段中数据的完整性,因此IP被称为不可靠服务
-
UDP和TCP的最基本的职责 是,将两个端系统件IP的交付服务拓展为运行在端系统上的两个进程之间的交付服务。这被称为运输层的多路复用 与多路分解
- 源主机将不同socket 中收集数据块,并为每个数据块封装首部信息从而生成报文段 ,然后将报文段传递到网络层,这就是多路复用
- 多路复用的要求:
- socket由唯一标识符
- 每个报文段有特殊字段(源端口号和目的端口号 )来指示该报文段所要交付到的socket
- 接收端的运输层检查 这些字段,标识出接收的socket,进而将报文段定向到socket,这就是多路分解
-
UDP和TCP还可以通过在其报文段首部 中包括差错检查字段而提供完整性检查
-
进程到进程的数据交付 和差错检查 是两种最低限度的运输层服务,也是UDP 所能提供的仅有的两种服务
-
TCP 为应用程序提供了几种附加服务
- 通过流量控制、序号、确认和定时器,TCP确保正确地、按序地将数据从发送进程交付给接收进程
- 这样就将不可靠IP 服务转换 为进程间的可靠数据传输服务
- TCP还提供拥塞控制 。拥塞控制与其说是一种提供给调用它的应用程序的服务,不如说是一种供给整个因特网的服务
- 不太严格地说,TCP拥塞控制防止 任何一条TCP连接用过多流量 来淹没通信主机之间的链路和交换设备
- TCP力求为 每个 通过一条拥塞网络链路 的 连接 ,平等地共享 网络链路带宽 。这可以通过调节 TCP连接的发送端 发送进网络的流量速率来做到
- 另一方面,UDP流量是不受本身调节的。所以使用UDP 的应用程序可以根据其需要以任何速率发送数据
- TCP比UDP复杂很多
#### UDP:
* UDP只做了运输协议能做的做少工作。除了复印/分解功能及少量的差错检测外,它几乎没有对IP增加别的东西
* 如果应用程序使用UDP,那么该应用程序差不多就是直接与IP打交道
* 在发送报文段之前,发送方和接收方是没有握手的,因此被称为无连接的
* 一些应用程序适合UDP,主要原因:
* **关于何时、发送什么数据的应用层控制更为精细**
* 无需建立连接
* **无连接状态**
* **分组首部开销小**
* UDP首部只有4个字段(**源端口号、目的端口号、长度、检验和** ),每个字段有两个字节组成
* 长度字段指明了包括首部在内的UDP报文段长度
* 检验和提供了差错检验功能
#### 可靠数据传输(rdt)协议:
* **检验和** ,**序号** ,**定时器** ,**肯定和否定确认分组**这些技术起到了必不可少的作用,至此才得到了一个可靠数据传输协议
* **流水线** 又提高了传输效率
* 在**回退N步** (**GBN** )**协议**中,允许发送方发送多个分组不许等待确认,但它也受限于在流水线中未确认的分组数不能超过某个最大允许数N
* ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png)
* **GBN** 也被称为**滑动窗口**协议,不断向后滑
* **选择重传**又是一种改进,位于中间的分组出现丢包、阻塞的问题,也不要去丢弃提前收到ack报文的序号位于后面的分组(缓存起来),至于序号为与前面的分组到了且收到ack报文后,就会移动窗口到未收到ack报文的分组处等待,在定时器作用后,会重发迟迟没到的分组,等待这次收到ack报文,再去统一的移动窗口
* 窗口长度必须 \<= 序号空间大小的一半
#### TCP:
* TCP是**全双工** 服务。两个进程可以在**同一条通道互相传输**数据
* TCP连接也是**点对点**的
* 前两次握手发送的TCP报文段都不含**有效载荷(应用层数据)**;第三个报文段才含有
* TCP将这些数据引导到该连接的**发送缓存** 里,发送缓存是在**三次握手初期设置** 的缓存之一
* 当TCP在另一端接收到一个报文段后,该报文段的数据就被放入该TCP的接收缓存中
* TCP连接的每一端都有发送缓存和接收缓存
* TCP规范没有提及在何时发送缓存中的数据,只是描述在方便的时候以报文段的形式发送数据
* TCP从缓存中取出并放入报文段中的数据数量受限于**最大报文段长度** (**Max Segment Size , MSS** )
* MSS根据最初确定的由本地发送本机发送的**最大链路层帧(最大传输单元)**来**决定**
* MSS是指报文段里的**应用层数据的最大长度**
* **TCP报文结构** :
* 同UDP报文段,都具有**源端口号** 、**目的端口号** 、**检验和**
* 还有32比特的**序号字段** 和32比特的**确认号字段** ,这些字段用来实现可靠数据传输服务
* TCP把**数据** 看作**无结构的、有序的字节流**。
* 一个报文段的**序号** 是该报文段首字节的**字节流编号**
* **确认号** 是主机A**期望** 从主机S收到的**下一字节的序号**
* 16比特的**接收窗口字段**,用于流量控制,该字段指示接收方愿意接受的字节数
* 4比特的**首部长度字段**,TCP首部长度可变,因为选项字段不确定
* **选项字段**用于协商最大报文段长度(MSS)或高速网络下用作窗口调节因子
* 6比特的**标志字段** (6个)。**ACK** 比特指示确认字段中的值是有效的\*\*;RST、SYN、FIN**比特用于连接的建立和拆除;还有**PSH和URG\*\*实践中不会用到
网络层:
-
三个主要组件:
- IP协议
- 路由选择部分
- 涉及因特网的网络层差错和信息报告的协议,即互联网控制报文协议(ICMP)
-
两种重要功能:
-
转发 :当一个分组到达路由器的一条输入链路 时,路由器必须将该分组移动到适当的输出链路
-
路由选择 :决定 分组发出后的路径的算法
-
-
每台路由器具有一张转发表
-
路由器通过检查到达分组首部字段的值 来转发分组,然后使用该值在表中索引查询输出链路接口
-
虚电路和数据报网络(主要是用后者)
-
路由器用分组的目的地址的前缀与该表中的表项进行匹配,如果有多个匹配时,就采用最长前缀匹配规则
#### 路由器工作原理:
* **输入端口** 完成查找功能
* 一个分组在进入交换结构时可能被暂时堵塞,被堵塞的分组必须在输入端口处排队
* **交换结构**将输入端口和输出端口相连接
* **输出端口**
* **路由选择处理器**执行路由选择协议,维护路由选择表以及链路状态信息,并为路由器计算转发表,还执行网络管理功能
#### IP(网际协议):
* 数据报格式(以IPv4为例):
* 版本号
* 首部长度(不包含选项字段的话就20字节)
* 服务类型
* 数据报长度
* 标识、标志、片偏移
* 这三个是针对分片的
* 标识就是看它是属于哪个大的数据报的
* 标志只有0和1,0代表这个片是最后一个,1反之
* 片偏移量就是推算它是大的数据包中第几个
* 存活时间(TTL):每当数据报由一台路由器处理时,该字段减一,减到0就必须丢弃
* 协议:仅在IP数据报到达目的地时才会使用,指示该数据报交给哪个特定的运输层协议
* 检验和:检验出差错就丢弃该数据报
* 源和目的IP地址
* 选项(IPv6已取消)
* 数据(有效载荷):IP数据报包含要交付给目的地的运输层报文段
* 数据报**分片** (**IPv4才有**):
* 并不是所有的链路层协议都能承载相同长度的网络层分组
* 如以太网帧只能承载1500字节、某些广域网帧能承载576字节
* 一个链路层帧能承载的最大数据量叫做最大传送单元(MTU)
* 所以就将数据报分片
* 分片只有组织好了才传向链路层
* IPv4编址:
* 主机与物理链路之间的边界叫做接口
* 路由器与它的任意一条链路之间的边界叫做接口
* 每台主机和路由器接口拥有自己的IP地址
* 一个IP地址对应一个接口
* 每个IP长度是32比特
* 2的32次方,约40亿个IP地址,已经不够用了
* 这些地址按照**点分十进制**记法
* IP的一部分由其子网来决定
* 互联主机接口和路由器接口的网络形成子网
* 如223.1.1.0/24,称为子网掩码,最左侧的24比特定义了子网地址
* 更加一般化,a.b.c.d/x的地址的x最高比特构成IP地址的网络部分,称为地址的前缀(网络前缀)
* 32 - X被称为网络部分
* 也有的是分类编址:具有8,16,24比特子网地址的子网分别被称为A、B、C类网络
* IP广播地址:255.255.255.255
* 当发送IP为255.255.255.255的数据报时,该报文会被交付给同一个网络中的所有主机
* \*\*动态主机配置协议(DHCP)\*\*允许主机自动获取一个IP地址,也叫即插即用协议
* DHCP是一个客户 - 服务器协议
* DHCP协议是四步:
1. 发现:主机发送广播并使用本主机源地址0.0.0.0
2. 提供:DNCP服务器也是发送广播,含有向客户推荐的IP地址,网络掩码,IP地址租用期
3. 请求: 客户向选中的一个服务器发送DHCP请求报文,回显配置参数
4. ACK:服务器用DHCP ACK报文响应,正式所要求的参数
* NAT可以进行网络地址转换,对外界屏蔽内部网络的细节(对一个家庭分配一个IP,但家庭内的几个设备共用这个IP)
*
#### ICMP(因特网控制报文协议):
* ICMP被**主机和路由器** 用来彼此**沟通网络层**的信息
* ICMP被认为是IP的一部分,但在体系结构上讲它是位于IP之上的,因为ICMP报文是承载在IP分组中的
* ICMP报文是作为IP的有效载荷
* ICMP报文有一个类型字段和一个编码字段
* IPv6:
* IP地址长度从32增加到128比特
* 40字节定长首部,舍弃选项字段
* IPv6不分片
* 不用检验和
* IPv4向IPv6迁移:
* 双栈:
1. 结点转化
2. 隧道
* 路由选择算法:
* 默认路由器又称第一路由器
* 源主机的默认路由器称为源路由器
* 目的主机的默认路由器称为目的路由器
* 一个分组从源主机到目的主机归结为源路由器到目的路由器
* 第一种广义的分类方式是根据算法是**全局式还是分散式**
1. 实践中,具有全局状态信息的算法常称为链路状态(Link State, LS)算法,因为该算法必须知道网络中每条来链路的费用
* 实践中这是通过让每个结点向网络中所有其他结点广播链路状态分组来实现的,每个链路状态分组包含它所链接的链路的特征和费用
2. 分散式,是每个结点只考虑与其直接相连的链路的费用,如距离向量(DV)算法
* 第二种广义的分类方式是根据算法是**静态的还是动态的**
1. 静态路由选择算法:人工干预
2. 动态路由选择算法:周期地运行或直接响应拓扑或链路费用的变化而运行
* 第三种广义的分类方式是根据算法是**负载敏感的还是负载迟钝的**
1. 负载敏感算法:链路费用会动态地变化以反映出底层链路的当前拥塞水平
2. 当前都是选用负载迟钝算法,因为某一条链路地费用不明显地反映当前的拥塞水平
P84 to P107
链路层:
- 运行链路层协议的任何设备都是结点,结点 包括主机、路由器、交换机、WiFi接入点
- 相邻结点的通信信道称为链路
- 链路层协议可能提供的服务:
- 封装成帧
- 链路接入
- **媒体访问控制(MAC)**协议协调多个点的帧传输
- 可靠交付 :
- 可靠交付用于易于产生高差错率的链路,例如无线链路
- 差错检测和纠正 :
- 通过发送结点在帧中包含差错检测比特,让接收结点进行差错检查
- 链路层的差错检测还会用硬件实现
- 差错纠正类似检测,能确定帧中差错的位置还能纠错
- 链路层的主体部分是在**网络适配器(网卡)**中实现的
- 网卡核心 是链路层控制器 ,该控制器是一个实现了许多链路层服务的专用芯片
- 因此,链路层控制器的许多功能是用硬件实现的
- 发送端,控制器取得由协议栈较高层生成并存储在主机内存的数据报,再来链路层封装成帧,然后遵循链路接入协议,将帧传进通信链路中
- 接收端,控制器收取帧,抽取出数据报。
- 链路层是硬件和软件的结合体
P113 to P125
- 主机和路由器都具有链路层地址,其实是其中的**适配器(即网络接口)**具有链路层地址
- 链路层地址 有各种叫法:LAN地址、物理地址、MAC地址
- MAC地址 :
- 长度是6个字节,共有2的48次方个可能的MAC地址,每个字节被表示为一对十六进制数
- MAC地址是刻在硬件上的(物理地址),但现在用软件可以被改变
- 每个适配器MAC地址是唯一的
- 适配器发送帧时,会将目的适配器的MAC地址插入该帧中
- MAC广播地址是48个1(FF-FF-FF-FF-FF-FF)
- chat的 : IP地址确实在网络通信中扮演了核心角色,但仅靠IP地址是不够的,原因如下:
- 局域网限制:IP地址主要用于广域网和互联网的通信,但在局域网内部,由于IP地址可能不唯一或受限,MAC地址确保了设备间的直接通信。
- 设备识别:MAC地址是设备的唯一标识符,用于在局域网内识别和定位设备,而IP地址可能会因为网络配置或动态分配而改变。
- 网络设备配置:在网络设备(如路由器、交换机)的配置过程中,MAC地址用于识别和管理连接的设备。
- 安全性:由于MAC地址的唯一性和不可更改性,它可以用于安全措施,比如通过MAC地址过滤来限制未授权设备的接入。
- 地址耗尽问题:IPv4地址有限,而MAC地址提供了一种在局域网内扩展设备数量的方式,尤其是在使用私有IP地址和NAT(网络地址转换)技术时。
- 移动性支持:设备在移动过程中可能会更换IP地址,但MAC地址保持不变,这对于移动设备和无线网络尤为重要。
- 链路层通信:在数据链路层,MAC地址用于控制数据帧的发送和接收,确保数据在物理网络中的传输。
- 网络管理:网络管理员可以利用MAC地址进行网络管理和故障排查,比如跟踪网络流量或识别网络中的设备。
- 地址解析协议(Address Resolution Protocol , ARP ):
- ARP将IP地址解析为MAC地址
- 每台主机或路由器中都含有一张ARP表
- 查目的主机MAC地址时,如果本地表中没查到,就会广播帧中发送查询ARP报文
- 一个ARP分组封装在链路层帧中,因此在体系结构中ARP是位于链路层之上,然而ARP分组也含有链路层地址的字段,所以最好吧ARP看成是跨越链路层和网络层边界两边的协议
- 查询ARP报文只会在子网中传输,所以要用到两个子网之间的路由器当媒介
- 以太网 :
- 以太网帧:
- 数据字段:承载IP数据报。
- 以太网最大传输单元是1500字节,IP数据报大了就需要分片。
- 数据字段最小是46字节,IP数据报小了就需要填充。用IP数据报的长度之带路来去除填充部分
- 目的地址、源地址:MAC地址
- 类型字段:允许复用多种网络层协议
- CRC(循环冗余检测)
- 前同步码:时钟同步和警告作用
- 数据字段:承载IP数据报。
- 所有以太网技术都是无连接服务
- 以太网帧:
- 链路层交换机 :
- 任务是接收入链路层帧并将它们转发到出链路
- 交换机对于主机和路由器是透明的
- 过滤:决定一个帧是转发走还是丢弃
- 转发:决定一个帧被导向哪个接口
- 交换表的字段有MAC地址、出接口、老化期
- 交换机转发分组是基于MAC地址而不是IP地址
- 交换机是自学习的
WEB请求:
- 如果没有IP地址,就先运行DHCP协议,从本地DHCP服务器获得一个IP地址
- 详细:操作系统生成一个DHCP请求报文,将报文放入具有目的地端口67(DHCP服务器)和源端口68(DHCP客户)的UDP报文段。该报文段被放置在一个具有广播IP目的地地址(255.255.255.255)和源IP地址0.0.0.0的IP数据报
- DHCP报文段封装成帧,该帧具有目的MAC地址FF:FF:FF:FF:FF:FF,广播到与交换机连接的所有设备
- DHCP服务器生成包含一个可用的IP地址和DNS服务器IP和网关路由器IP的报文,再不断封装成帧,返回去
- WEB浏览器通过生成一个TCP套接字开始该进程,套接字向域名发送HTTP请求
- DNS请求,获得域名对应IP地址
- 详细:生成一个具有网关路由器IP的ARP查询报文,封装成帧将其广播
- 最终返回网关路由器MAC地址
- 向交换机发送帧
- 在经过路由器一步一步转发
- 获得域名对应的IP地址,生成TCP套接字,向域名出发送HTTP GET报文
- 三次握手:
- 生成一个具有目的端口80的 SYN 报文段,将该报文段封装进目的IP的IP数据报中,再封装进网关路由器MAC地址的帧中,向交换机发送该帧
- 数据报到达服务器,拆解帧,抽取SYN报文,产生ACK报文段,封装成帧在返回
- 生成HTTP GET报文,封装成帧发送
- 服务器收到后再生成HTTP响应报文,将请求的Web网页内容放进响应体,封装成帧发送
- 收到后抽取Web网页的html,显示Web网页
:FF:FF:FF,广播到与交换机连接的所有设备
- DHCP服务器生成包含一个可用的IP地址和DNS服务器IP和网关路由器IP的报文,再不断封装成帧,返回去
- WEB浏览器通过生成一个TCP套接字开始该进程,套接字向域名发送HTTP请求
- DNS请求,获得域名对应IP地址
- 详细:生成一个具有网关路由器IP的ARP查询报文,封装成帧将其广播
- 最终返回网关路由器MAC地址
- 向交换机发送帧
- 在经过路由器一步一步转发
- 获得域名对应的IP地址,生成TCP套接字,向域名出发送HTTP GET报文
- 三次握手:
- 生成一个具有目的端口80的 SYN 报文段,将该报文段封装进目的IP的IP数据报中,再封装进网关路由器MAC地址的帧中,向交换机发送该帧
- 数据报到达服务器,拆解帧,抽取SYN报文,产生ACK报文段,封装成帧在返回
- 生成HTTP GET报文,封装成帧发送
- 服务器收到后再生成HTTP响应报文,将请求的Web网页内容放进响应体,封装成帧发送
- 收到后抽取Web网页的html,显示Web网页