本书结构是自顶向下的,所以请按下列顺序阅读:
1.计算机网络自顶向下--应用层
2.计算机网络自顶向下--运输层
3.计算机网络自顶向下--网络层
4.计算机网络自顶向下--链路层
链路层
链路层概述
- 运行链路层协议的任何设备均称为结点,沿着通信路径连接相邻结点的通信信道称为链路。通过特定链路时,传输结点将数据报封装在链路层帧中,将该帧传入链路
- 举例:游客想从苏州到临汾玩,旅行社安排的线路是:第一段线路是从苏州乘火车到上海,第二段线路是在上海坐飞机到太原,第三段线路是太原坐大巴到临汾
- 游客相当于数据报
- 每个运输段相当于一条链路
- 每种运输方式相当于一种链路层协议
- 旅行社相当于一个路由选择协议
-
链路层提供的服务
能够提供的协议可能包括:(不同协议包括不同,细节不同)- 成帧
- 网络层数据报经链路传送前,链路层协议要将其用链路层帧封装起来
- 帧的结构由链路层协议规定
- 链路接入
- 媒体访问控制MAC协议,规定帧在链路上传输的规则,协调多个结点的帧传输
- 可靠交付
- 保证无差错经链路层移动每个网络层数据报
- 确认和重传,类似TCP
- 通常用于高差错率链路,如无线链路,同轴电缆、光纤、双绞线等链路不需要
- 目的是在差错发生的链路上纠正差错,而不是通过运输层或应用层进行端到端数据重传
- 差错检测和纠正
- 奇偶校验
- 检验和
- 循环冗余检测
- 成帧
-
链路层在何处实现
- 路由器中:在线路卡中实现
- 端主机中:网络适配器(网络接口卡,网卡),位于其核心的是链路层控制器,一个实现了许多链路层服务(成帧、链路介入、差错检测)的专用芯片。之前是物理分离的卡,现在网卡直接焊在了主板上
- 大部分链路层是在硬件中实现的,但部分链路层是在运行于主机CPU上的软件中实现的,软件实现了高级功能,如组装链路层寻址信息和激活控制器硬件,响应控制器中断
- 链路层是协议栈中软件和硬件交接的地方
差错检测和纠正技术
- 传输数据中检测差错的三种技术
- 奇偶校验(描述差错检测和纠正背后的思想)
- 检验和方法(应用于运输层)
- 循环冗余检测(应用在适配器中的链路层)
-
奇偶校验
- 单个奇偶校验位
- 二维奇偶校验
- d个比特被划分为i行j列,对每行每列计算奇偶值,产生的j+i+1奇偶比特构成链路层帧的差错检测比特
- 可利用存在奇偶校验差错的列和行的索引来实际识别发生差错的比特,并纠正
- 校验比特本身的单个比特差错,也可以检测和纠正
- 能检测但不能纠正一个分组中两个比特差错的任何组合
-
检验和方法
- 数据的字节作为16bit的整数对待并求和的反码
-
循环冗余检测CRC
- 现今广泛应用,CRC编码也称多项式编码,将发送的比特串看做系数是0和1的多项式,多比特串的操作解释为多项式算数
- 考虑d比特的数据D,发送方和接收方首先必须协商一个r+1比特模式,称为生成多项式,表示为G,要求G的最高有效位比特(最左)是1
- 对于给定数据段D,发送方要选择r个附加比特R,附加到D上,使得到的d+r个比特模式用模2运算恰好被G整除
- 接收方用G去除收到的d+r比特,余数非零则出现差错
- 所有CRC计算采用模2算数,不进位不借位,加减法相同,等价于操作数的按位异或(XOR)
- 乘法除法与在二进制算数中相同,乘以2^k就是左移k个位置
多路访问链路和协议
-
有两种类型的网络链路
- 点对点链路
- 点对点协议PPP
- 高级数据链路控制协议HDLC
- 广播链路
- 让多个发送和接收结点都连接到相同的、单一的、共享的广播信道上
- 当任何一个结点传输一个帧时,信道广播该帧,其他结点都收到一个副本
- 如以太网和无线局域网
- 点对点链路
-
多路访问问题
- 如何协调多个发送和接收结点对一个共享广播信道的访问
- 所有结点都能传输帧,多个结点可能会同时传输帧,所有结点同时接到多个帧,传输的帧在所有接收方出碰撞了,发生碰撞时,所有帧丢失
- 多路访问协议:结点通过协议规范它们在共享的广播信道上的传输行为
- 信道划分协议
- 随机接入协议
- 轮流协议
- 协议希望有的特性,理想情况下对速率R bps的广播信道
- 仅有一个结点发送数据,结点具有R bps的吞吐量
- M个结点发送数据时,每个结点平均吞吐量R/M bps
- 协议分散,不会因为主结点故障似整个系统崩溃
- 协议简单不昂贵
-
信道划分协议
- 时分多路复用TDM、频分多路复用FDM,缺点较大
- 码分多址CDMA
- TDM和FDM分别为结点分配时隙和频率,CDMA对每个结点分配不同的编码
- 每个结点用其唯一编码对发送数据进行编码,使得不同结点能同时传输,接收方仍能正确而接收
- 抗干扰,军用系统,民用蜂窝电话
-
随机接入协议
- 传输结点总是以信道全部速率R bps进行发送
- 有碰撞时,涉及碰撞的每个节点反复重发它的帧(等待一个随机时延),直到该帧无碰撞的通过
常用随机接入协议:
-
时隙ALOHA
- 当结点有新帧发送时,等到下一个时隙开始传输整个帧(设一个时隙传一个帧)
- 如果有碰撞,结点在时隙结束之前检测到这次碰撞,以p的概率在后序的每个时隙重传它的帧,直到无碰撞
- 效率:当活跃结点数量趋向无穷大时,最大效率37%
-
(纯)ALOHA
- 碰撞时,立即以概率p重传该帧,否则等待一个帧传输时间
- 效率:仅为时隙ALOHA的一半
-
载波侦听多路访问CSMA
- 在时隙和纯ALOHA种,一个结点传输的决定独立于其他结点,不关心自己传输时别人是不是在传输
- 举例:有礼貌的人类谈话有两个重要规则
- 说话之前先听。如果在说话,等他们说完话再说,网络中称为载波侦听 ,结点等待直到一小段时间没有传输,然后开始传输
- 如果与他人同时开始说话,停止说话。称为碰撞检测,当一个传输结点在传输时一直侦听此信道,如果检测到另一个结点正在传输,它就停止,等待一段随机事件,重复『侦听=当空闲时传输』动作
- 这两个规则包含在CSMA和具有碰撞检测的CSMA/CD协议族中
- 所有结点都载波侦听了,为何当初会发生碰撞?
- B的比特沿着广播媒体传播所实际需要的时间不是0(即使2*10^8),在还没到D时,尽管B正在发,但D侦听的信道空闲,D就开始传输,于是发生了碰撞
- 广播信道端到端信道传播时延决定了性能,时延越大,不能侦听到已传输结点的可能就越大,碰撞越多,性能越差
-
具有碰撞检测的载波侦听多路访问CSMA/CD(考试重点哟)
- 与广播信道相连的适配器:
- 适配器从网络层一条获得一条数据报,准备链路层帧,并将其放入帧适配器缓存中
- 如果适配器侦听到信道空闲,开始传输帧;如果侦听到信道在忙,等待,直到空闲
- 传输过程中,适配器监视信道
- 如果适配器传输整个帧而未检测到其他信号,该适配器完成了该帧,否则停止传输帧
- 中止传输后,适配器等待一个随机时间量,继续侦听
- 选择随机回退时间间隔太大,信道会空闲,太小会再次碰撞。当碰撞结点数量较少时时间应该间隔较短,否则较长。二进制指数后退算法解决这个问题
- 帧经历一连串n次碰撞,结点随机从{0,1,2,…,2^n-1}选择一个K值
- 一个帧经历碰撞越多,K选择的间隔越大
- 以太网中,一个结点等待的实际时间量是K*512bit的时间
- 效率
- 信道在大多数时间都会有效地工作
- 与广播信道相连的适配器:
-
轮流协议
- 轮询协议
- 指定一个主结点,以循环的方式轮询每个结点
- 主结点首先向结点A发送一个报文,告知A能传输帧的最大数量,A传完后主结点告诉B能传帧的最多数量,如此循环
- 缺点:有轮询时延;主结点故障,整个信道就GG
- 令牌传递协议
- 没有主结点,一个叫令牌token的特殊帧在结点之间以固定次序交换,如1发给2,2发给3,N发给1,就像网络拓扑结构中的环状网络令牌
- 当一个结点收到令牌时,有帧发送,则发送最大数量的帧,然后转发令牌;没帧发送,直接把令牌转发
- 轮询协议
DOCISIS:用于电缆因特网接入的链路层协议
交换局域网
- 交换机运行在链路层,它们使用链路层地址而不是IP地址来转发链路层帧通过交换机网络
-
链路层寻址和ARP
- MAC地址
- 并不是主机或路由器具有链路层地址,而是它们的适配器(网络接口)具有链路层地址。具有多个网络接口的主机或路由器也有多个链路层地址,就像它也有多个IP地址一样
- 链路层交换机并没有链路层地址,交换机透明地执行在主机与路由器之间承载数据报的任务
- 链路层地址也叫LAN地址、物理地址、MAC地址
- MAC地址长度6字节,2^48个可能的MAC地址,通常用十六进制表示法,如5C-66-AB-90-75-B1
- MAC地址一般是固定的(也有软件改变适配器MAC地址的可能)
- 没有两块适配器有相同的MAC地址,MAC地址空间由IEEE管理,IEEE给公司固定前24个比特,后面24个比特让公司自己去生成
- MAC地址具有扁平接口。比如具有802.11接口的手机总是有相同mac地址,而当主机移动时,IP地址会改变(IP地址是层次结构)
- MAC地址像身份证号,IP地址像邮政地址,有层次,会改变
- 当某适配器要向目的适配器发送一个帧时,发送适配器将目的适配器的MAC地址插入该帧,发送到局域网上,适配器可以接受一个并非向它寻址的帧,当适配器接受一个帧时,检查帧中的目的MAC地址与自己的MAC地址是否匹配,若匹配则取出数据报,向上传递,否则丢弃
- 适配器通过MAC广播地址FF-FF-FF-FF-FF-FF来广播
- 地址解析协议ARP
- 转换网络层地址和链路层地址,如IP地址和MAC地址的转换
- DNS为因特网中任何地方的主机解析主机名,而ARP只为在同一个子网上的主机和路由器接口解析IP地址
- 每台主机和路由器在内存中有一个ARP表,包含IP地址到MAC地址的映射关系,过期时间20分钟
- 若发送方的ARP表没有目的主机的表项,发送反公用ARP协议来解析这个地址
- 首先发送方构造一个ARP分组,字段包括发送和接受IP地址和MAC地址,ARP查询分组和响应分组格式相同
- 适配器用MAC广播地址发送该ARP查询分组,每个适配器都把ARP分组向上传递给ARP模块,检查自己的IP地址和分组中的目的IP地址是否一致
- 匹配的主机发送回一个ARP响应分组,然后查询主机更新它的ARP表,并发送它的IP数据报
- ARP协议是一个跨越链路层和网络层的协议
- 发送数据报到子网以外
- 路由器有几个接口,就有几个IP地址、ARP模块和适配器,假设一个路由器连着两个子网A、B
- 子网A中的适配器要发往子网B中的适配器,先通过子网A的ARP把数据报发到子网A跟子网B相连的路由器,路由器通过子网B的ARP将该数据报转发给目的适配器
- MAC地址
-
以太网
- 以太网占领了现有的有线局域网市场,就像因特网之于全球联网的地位
- 集线器是一种物理层设备,作用于比特而不是帧。当0或1的比特到达一个接口时,集线器只是重新生成这个比特,将其能量强度放大,并将该比特向其他所有接口传输出去
- 早期基于集线器星形拓扑以太网,现在位于中心的集线器被交换机所取代。交换机是无碰撞的存储转发分组交换机,运行在链路层
-
以太网帧结构
- 数据字段(46~1500字节):承载了IP数据报(如),超过1500字节的数据报需要分片;若小于46字节,需要填充到46字节
- 目的地址(6字节):目的适配器的MAC地址。当目的适配器收到一个以太网帧,若目的地址是自己的MAC地址或广播地址,将数据字段传给网络层,其他则丢弃
- 源地址
- 类型字段:允许以太网复用多种网络层协议
- CRC(4字节):差错检测
- 前同步码(8字节):以太网帧以前同步码开始,前7个字节用于唤醒接收适配器,同步发送方接收方时钟,第8个字节最后两个比特(11)警告目的适配器,重要内容来了
- 以太网技术向网络层提供不可靠服务
-
以太网技术
- 早期10BASE-2和10BASE-5标准规定两种类型的同轴电缆的10Mbps以太网,每种标准限制在500米,通过转发器得到更长运行距离
- 今天的以太网,结点经点对点由双绞铜线或光纤构成的线段与一台交换机相连
- 10Gbps以太网,5类UTP线缆
- 线代交换机是全双工的,一台交换机和一个结点能同时向对方发送帧而没有干扰。在基于交换机的以太局域网中,没有必要使用MAC协议了!
-
链路层交换机
- 交换机的任务:接收入链路层帧,转发到出链路
- 交换机自身对子网中的主机和路由器是透明的,主机/路由器向另一个主机/路由器寻址一个帧,顺利将帧发送进局域网,并不知道交换机干嘛
- 交换机是即插即用设备,管理员无需配置
- 交换机是双工的,任何交换机接口能同时发送和接收
-
转发和过滤
- 借助于交换机表,包含局域网上某些主机和路由器的表项(MAC地址,通向该地址的交换机接口,表项放置的时间)
- 假定目的地址为DD-DD-DD-DD-DD-DD的帧从交换机接口x到达,交换机用该MAC地址索引交换机表,有三种可能:
- 表中没有该地址,交换机广播该帧
- 表中有表项将该地址与接口x联系起来,过滤掉,因为该帧从x来,DD也通过x去,说明该帧跟DD适配器在同一个局域网段,该帧已经在包含目的地的局域网网段广播过了
- 表中有表象将该地址与接口y≠x联系起来,该帧需要被转发到与接口y相连的局域网段,放到接口y前的输出缓存,完成转发功能
-
自学习:表是自动、动态建立的
- 交换机表初始为空
- 对于每个接口接收到的每个入帧,交换机在其表中存储
- 该帧源MAC地址
- 帧到达的接口
- 当前时间
- 一段时间后,交换机没有接受到以该地址作为源地址的帧,在表中删除该地址。如果一台PC被另一台PC代替,原来PC的MAC地址将被清除
-
链路层交换机的性质
- 消除碰撞
- 交换机缓存帧并且不会在网段上同时传输多于一个帧,交换机提供了比广播链路局域网高的多的性能改善
- 异质的链路
- 交换机将链路彼此隔离,因此局域网中的不同链路能够以不同速率运行,在不同媒介上运行
- 网络管理
- 主动断开异常适配器
- 收集带宽使用的统计数据、碰撞率和流量类型,这些信息用来调试解决问题
- 消除碰撞
-
安全性
- 交换机毒化:向交换机发送大量不同伪造源MAC地址的分组,用伪造表项填满了交换机表,没有为合法主机留下空间,导致交换机广播大多数帧,被嗅探器俘获到
-
交换机和路由器比较
- 路由器是第三层的分组交换机,交换机是第二层的分组交换机
- 交换机:
- 交换机即插即用,相对高的分钟过滤和转发速率
- 防止广播帧循环,交换网络的活跃拓扑限制为一颗生成树
- 大型交换网络要求在主机和路由器中有大的ARP表,生成大量ARP流量和处理量
- 对广播风暴不提供任何保护,使得以太网崩溃
- 路由器:
- 分组不会被限制到生成树上,可以使用源到目的地的最佳路径,拓扑结构更加丰富
- 对第二层的广播风暴提供了防火墙保护
- 不是即插即用,需要人为配置IP地址
- 对分组处理时间较长,因为必须处理第三层字段
- 通常,几百台主机组成的小网络有几个局域网网段,交换机足够了,不要求IP地址任何配置就能使流量局部化并增加总计吞吐量
- 几千台主机组成的更大网络,网络中除了交换机还要路由器,提供更健壮的流量隔离和对广播风暴的控制,主机之间路由更智能
-
虚拟局域网
- 现代机构的局域网常常配置为等级结构,每个工作组有自己的交换局域网,经过一个交换机等级结构与其他工作组的交换局域网互联
- 支持虚拟局域网VLAN的交换机允许一个单一的物理局域网基础设施定义多个虚拟局域网
- 在一个基于接口的VLAN中,交换机的接口由网络管理员划分为组,每个组构成一个VLAN,每个VLAN中的端口形成一个广播域,即来自一个端口的广播流量仅能到达该组的其他端口
- 两个组之间如何交换?需要将VLAN交换机的一个端口与一台外部路由器相连,并且该端口配置为属于两个组。现在有包含一台VLAN交换机和一台路由器的单一设备,不需要分离的外部路由器
- 扩展互联VLAN的方法:VLAN干线连接
- 每台交换机上的一个特殊端口配置为干线端口,互联两台VLAN交换机
- 标准以太网帧首部再加4字节VLAN标签,用于指示帧属于哪个特定VLAN
数据中心网络
- 因特网公司如FLAG构建了大量数据中心,每个数据中心容纳数十万太主机,同时支持着不同云应用。每个数据中心有自己的数据中心网络,内部主机彼此互联,并与因特网中其他数据中心互联
- 投资巨大,一个10w台主机的数据中心每月费用超过1200w刀
- 数据中心的主机(称为刀片)就像数据中心的工蜂:提供内容,存储文档,共同执行大规模分布式计算
- 多台机架顶部交换机与多台边界路由器相连
-
负载均衡
- 一个云数据中心,能够同时提供搜索、电子邮件、视频应用等应用,每个应用与一个公开可见的IP地址关联,外部用户向该地址发送请求并从该地址接收响应
- 外部请求首先被定向到一个负载均衡器,向主机分发请求,以主机当前负载作为函数在主机之间均衡负载
- 负载均衡器基于分组的目的端口号(第四层)以及目的IP地址做决策,被称为第四层交换机
- 客户请求—》负载均衡器—》主机—》负载均衡器—》客户
- 不仅平衡主机间工作负载,还提供类似NAT功能,将外部IP地址转换为内部IP地址,防止客户直接接触主机
-
等级结构体系
- 主机规模扩大到数十万时,数据中心应用路由器和交换机等级结构
- 边界路由器——接入路由器——第一层交换机+负载均衡器——第二层交换机——第三层交换机(TOR交换机,top of rack,机架交换机)
- 每台接入路由器下的主机构成单一子网,为使ARP广播流量本地化,每个子网分为更小VLAN子网,每个由数百台组成
- 数据中心网络发展趋势
- 全连接拓扑:每台第一层交换机都与所有第二层交换机相连
- 模块化数据中心MDC
回顾:Web页面请求的历程
-
准备:DHCP、UDP、IP和以太网
- 假定小明启动电脑,用以太网电缆连接到学校的以太网交换机
- 小明电脑的操作系统生成一个DHCP报文,将报文封装到目的端口67(DHCP服务器)和源端口68(小明的DHCP客户)的UDP报文段,该报文段又封装到目的地址是广播地址、源地址0的IP数据报中
- 包含DHCP请求报文的IP数据报封装到以太网帧中,目的MAC地址是MAC广播地址,该帧将广播到与交换机连接的所有设备(包括DHCP服务器)
- 包含DHCP请求的广播以太网帧是小明电脑发出的第一个帧,因此交换机在所有出端口广播入帧,包括连接到路由器的端口,同时自动添加表项到交换机表
- 路由器在它的接口接收到该帧,抽取IP数据报(因为是广播,否则地址不匹配会丢弃),UDP报文段被分解向上到达UDP,DHCP请求报文从里面再抽取出来,此时DHCP服务器得到了DHCP请求报文(DHCP服务运行在路由器)
- DHCP服务器回发DHCP ACK报文,包括了IP地址,DNS本地服务器IP地址、默认网关路由器IP地址、网络掩码,放入UDP报文段,再放入IP数据报,再放入一个以太网帧,目的MAC地址是小明电脑的MAC地址
- 包含DHCP ACK的帧由路由器发送给交换机,交换机从交换机表寻址到输出接口转发
- 小明电脑收到该帧,抽取IP数据报,抽取UDP报文段,抽取DHCP ACK报文。小明的DHCP客户记录下它的IP地址和DNS服务器的IP地址,在其IP转发表安装默认网关地址。小明电脑向默认网关发送所在子网以外的数据报
-
仍在准备:DNS和ARP
当小明将www.baidu.com的URL输入Web浏览器时,开启了一长串事件,导致百度主页最终显示在Web浏览器上。- 为了生成TCPsocket向baidu.com发送HTTP请求,需要知道其IP地址,小明电脑的操作系统因此生成一个DNS查询报文,将网址放入DNS报文,再将报文放入目的端口号53的UDP报文段,该UDP报文段放入具有IP目的地址为DNS服务器(DHCP服务器返回的)的IP数据报中
- 小明电脑将包含DNS请求报文的数据报放入一个以太网帧中,该帧在链路层需要寻址发送到小明学校网络的网关路由器。为了获得该网关路由器的MAC地址,小明的电脑需要使用ARP协议,将IP地址—》MAC地址
- 小明电脑生成一个目的IP地址为默认网关的ARP查询报文,放在具有目的地址为MAC广播地址的以太网帧中,并向交换机发送该以太网帧,交换机将帧广播给所有连接的设备,包括网关路由器
- 网关路由器在通往学校网络的接口上接收到包含该ARP查询报文的帧,发现在ARP报文中目标IP地址匹配自己的IP地址,网关路由器因此准备一个ARP回答,指示自己的MAC地址。它将ARP回答放在一个以太网帧中,目的地址为小明电脑的MAC地址,并向交换机发送该帧,交换机将该帧交付给小明电脑
- 小明电脑接收包含ARP回答报文的帧,并从ARP回答报文中抽取网关路由器的MAC地址
- 小明电脑终于能使包含DNS查询的以太网帧寻址到网关路由器的MAC地址。该帧中的IP数据报中的目的地址文DNS服务器,而帧具有目的地址网关路由器MAC。小明电脑向交换机发送该帧,交换机将该帧交付给网关路由器
-
仍在准备:域内路由选择到DNS服务器
- 网关路由器接收该帧并抽取包含DNS查询的IP数据报。路由器查找该数据报的目的地址,根据其转发表决定将数据报发送到comcast网络中最左边路由器
- 最左边路由器收到该帧,抽取IP数据报,检查目的地址,根据转发表为其确定出接口,经过该接口向DNS服务器转发数据报。转发表已根据comcast域内协议(如RIP、OSPF或IS-IS),以及因特网域间协议BGP所填写
- 最终包含DNS查询的IP数据报到达了DNS服务器。DS服务器抽取出DNS查询报文,在其数据库中快速查找www.baidu.com,找到包含该IP地址的DNS源记录(假设缓存在当前DNS服务器,源与权威DNS服务器,否则需要递归、迭代查找)。DNS服务器形成了包含该主机名到IP地址映射的DNS回答报文,放入UDP报文段,通过comcast网络反向转到小明学校路由器,经过以太网交换机到小明电脑
- 小明电脑从DNS报文抽取出www.baidu.com的IP地址
-
Web客户-服务器交互:TCP和HTTP
- 小明电脑有了百度的IP地址,终于能生成TCP套接字,用于向www.baidu.com发送HTTP GET报文。小明生成套接字时,小明电脑中的TCP必须首先与www.baidu.com的TCP执行三次握手。因此小明电脑首先生成具有目的端口80(HTTP)的TCP SYN报文段,将报文段放在目的IP地址为baidu的IP数据报,将数据报放在MAC地址为网关路由器的帧中,向交换机发送该帧
- 在学校网络、comcast网络和百度的路由器朝着www.baidu.com转发包含TCP SYN的数据报,使用每台路由器中的转发表。支配分组经过comcast和百度网络之间域间链路转发的路由器转发表项,是BGP协议决定的
- 包含TCP SYN的数据报到达www.baidu.com,从数据报抽取报文并分解到与80端口向联系的欢迎套接字。对百度HTTP服务器和小明电脑之间的TCP连接生成一个连接套接字。产生一个TCP SYNACK报文段,将其放入向小明电脑寻址的一个数据报中,最后放入链路层帧中,将www.baidu.com连接到其第一条路由器
- 包含TCP SYNACK报文段的数据报通过百度、comcast和学校网络,最终到达小明电脑的以太网卡。数据报在操作系统中分解到TCP套接字,从而进入连接状态
- 借助小明电脑上的套接字,浏览器生成包含要获取URL的HTTP GET报文,报文写入套接字,GET报文成为TCP报文段的数据载荷。交付到百度
- baidu的HTTP服务器从TCPsocket读取HTTP GET报文,生成一个HTTP响应报文,将请求的Web页内容放入HTTP响应体重,将报文发送进TCPsocket
- 小明浏览器从套接字读取HTTP响应,抽取Web网页的html,显示了Web网页