第1章 浏览器生成消息——探索浏览器内部
问题(判断题)
1http://www.baidu.com中的www代表world wide web协议(对通信操作规则所做的定义)
2个人也可以申请注册互联网中的域名
3浏览器等网络应用程序实际上并不具备网络控制功能
答案
1错误。www只是web服务器上的一种命名。而且world wide web也不是一个协议的名字,而是web提出者最早开发的浏览器兼HTML编辑器的名字
2正确。一般如此,只要没有特殊的域名限制
3正确。应用程序并不是自己去控制网络,而是委托操作系统来控制网络
探索之旅的看点
(1) 生成HTTP请求消息
(2) 向DNS服务器查询web服务器的IP地址
(3) 全世界DNS服务器的大接力
(4) 委托协议栈发送消息
1.1生成HTTP请求消息
1.1.1探索之旅从输入网址开始
1.1.2浏览器先要解析URL
1.1.3省略文件名的情况
1.1.4HTTP的基本思路
1.1.5生成HTTP请求消息
1.1.6发送请求后会收到响应
一条请求消息中只能写一个URI。如果需要获取多个文件,必须对每个文件单独发送一条请求
1.2向DNS服务器查询web服务器的IP地址
1.2.1IP地址的基本知识
IP地址主机号
全部为0:表示整个子网
全部为1:表示向子网上所有设备发送包,即“广播”
1.2.2域名和IP地址并用的理由
1.2.3socket库提供查询IP地址的功能
Socket库是用于调用网络功能的程序组件集合。
1.2.4通过DNS解析器向DNS服务器发出查询
根据域名查询IP地址的时候,浏览器会使用socket库中的解析器
1.2.5解析器中的内部原理
1.3全世界DNS服务器大接力
1.3.1DNS服务器的基本工作
DNS服务器会从域名和IP地址的对照表中查找相应的记录,并返回IP地址
1.3.2域名的层次结构
1.3.3寻找相应的DNS服务器并获取IP地址
1.3.4通过缓存加快DNS服务器的相应
1.4委托协议栈发送消息
1.4.1数据收发操作概览
向操作系统内部的协议栈发出委托时,需要按照指定的顺序来调用socket库中的程序组件。
1.4.2创建套接字阶段
应用程序是通过“描述符”这一类似号码牌的东西来识别套接字的。
1.4.3连接阶段:把管道接上去
描述符:应用程序用来识别套接字的机制
IP地址和端口号:客户端和服务器之间用来识别对方套接字的机制
1.4.4通信阶段:传递消息
1.4.5断开阶段:收发数据结束
1.5网络术语其实很简单
问题
1http://www.baidu.com中的http是什么意思?
2下面两个网址有什么不同?
http://www.nekky.co.jp/sample
http://www.nekky.co.jp/sample/
3用来识别连接在互联网上计算机和服务器地址叫什么?
4根据web服务器的域名来查询IP地址所使用的服务器叫什么?
5向DNS服务器发送请求消息的程序叫什么?
词汇是人类创造的,如果能理解,词汇创造者的思路,也就能理解这个词语的真正含义。而理解网络中每个词汇的真正含义之后,对网络的理解也会更加深入,反过来也会更加理解设计和创造网络的那些人。各位有不懂的词汇吗?问问我们的探索队长吧!
答案
1HTTP协议
2第一个sample代表文件名,b中的sample代表目录名
3IP地址
4DNS服务器
5解析器
第2章 用电信号传输TCP/IP数据——探索协议栈和网卡
问题(判断题)
1我们现在使用的以太网存在不符合国际标准的部分
2TCP/IP是由TCP和IP两个协议的名字组合而成的,最开始这两个协议是合在一起的
3网络包通信技术是20世纪60年代为用计算机进行数据通信而设计出来的
答案
1正确。
2正确。最早的TCP/IP协议原型设计相当于现在的TCP和IP合在一起的样子,后来才拆分为TCP和IP两个协议
3正确。在网络包出现之前,通信都是像电话一样把线路连接起来进行的。但是,连接线路的通信方式只能和固定的对象进行通信,无法发挥计算机可以处理多种工作的特点。为了解决这个问题,人们设计出了使用网络包来进行通信的方式。
探索之旅的看点
1创建套接字
2连接服务器
3收发数据
4从服务器断开连接并删除套接字
5IP与以太网的包收发操作
6用UDP协议收发数据的操作
2.1创建套接字
2.1.1协议站的内部结构
浏览器、邮件等一般应用程序用程序收发数据时用TCP;DNS查询等收发数据时用UDP
2.1.2套接字的实体就是通信控制信息
协议栈是根据套接字中记录的控制信息来工作的。
2.1.3调用socket时的操作
创建套接字时,首先分配一个套接字所需要的内存空间,然后向其中写入初始状态。
2.2连接服务器
2.2.1连接是什么意思
2.2.2负责保存控制信息的头部
通信操作中使用的控制信息分为两类
1头部中记录的信息2套接字(协议栈中的内存空间)中记录的信息
2.2.3连接操作的实际意义
连接操作的第一步是在TCP模块处创建表示连接控制信息的头部。
2.3收发数据
2.3.1将HTTP请求消息交给协议栈
MTU:一个网络包的最大长度,以太网中一般为1500字节
MSS:出去头部之后,一个网络包素能容纳的TCP数据的最大长度
2.3.2对较大数据进行拆分
2.3.3使用ACK号确认网络包已经收到
通过“序号”和“ACK号”可以确认接收方是否收到了网络包
2.3.4根据网络包平均往返时间 调整ACK号等待时间
2.3.5使用窗口有效管理ACK号
2.3.6ACK与窗口的合并
2.3.7接受HTTP响应消息
2.4从服务器断开并删除套接字
2.4.1数据发送完毕后断开连接
2.4.2删除套接字
2.4.3数据收发操作小节
2.5IP与以太网的包收发操作
2.5.1包的基础知识
2.5.2包的收发操作概览
IP模块负责添加如下两个头部。
1MAC头部:以太网用的头部,包含MAC地址
2IP头部:IP用的头部,包含IP地址
无论是要收发的包是控制包,IP对各种类型的包的收发操作都是相同的。
2.5.3生成包含接收方IP地址的IP头部
IP头部的“接受方IP地址”填写通信对象的IP地址。
发送方IP地址需要判断发送所使用的网卡,并填写该网卡的IP地址。
2.5.4生成以太网用的MAC头部
IP模块根据路由表网关栏的内容判断应该吧包发送给谁(网关就是 TCP\IP协议中的路由器)
2.5.5通过ARP查询目标路由器的MAC地址
查询MAC地址需要使用ARP
2.5.6以太网的基本知识
交换式集线器简称交换机
2.5.7将IP包转换成光电信号发送出去
网卡的ROM中保存着全世界唯一的MAC地址,这是在生产网卡的时候写入的。
网卡中保存的MAC地址会由网卡驱动程序读取并分配给MAC模块。
2.5.8给网络包再加3个控制数据
2.5.9向集线器发送网络包
网卡的MAC模块生成通用信号,然后由PHY(MAU)模块转换成可以在网线中传输的格式,并通过网线发送出去。
2.5.10接受返回包
2.5.11将服务器的响应包从IP传递给TCP
2.6UDP协议的收发操作
2.6.1不需要重发的数据用UDP发送跟有效
2.6.2控制用的短数据
2.6.3音频和视频数据
问题:
1表示网络包收件人的接收方IP地址位于IP头部还是TCP头部呢?
2端口号用来指定服务器程序的种类,那么它位于TCP头部还是IP头部中呢?
3会对包是否正确送达进行确认的是TCP还是IP呢?
4根据IP地址查询MAC地址的机制叫什么?
5在收到ACK号之前继续发送下一个包的方式叫什么?
2.7网络术语其实很简单
插进socket里面的是灯泡还是程序?
答案:
1IP头部
2TCP头部
3TCP
4ARP
5滑动窗口方式
第3章 从网线到网络设备——探索集线器、交换机和路由器
问题(判断题)
1我们现在使用的以太网网线(双绞线)是由美国室内电话线发展而来的
2路由器比交换机问世时间更早
3对于路由器和交换机,如果包在传输过程中发生错误,会直接丢弃错误的包而不是尝试修复
答案
1正确。最早的以太网使用专用同轴网线,后来变成美国室内电话线改良的版本,原因是它可以兼容电话线的布线工具和材料,比较方便
2正确。交换机比路由器更加简单,因此可能有人以为交换机应该比路由器出现得更早,其实是路由器先问世的。
3正确。不过操作系统中的网络控制软件(协议栈)会对丢弃的包进行重发,数据不会因此丢失
探索之旅的看点
1信号在网线和集线器里传输
2交换机的包转发操作
3路由器的包转发操作
4路由器的附加功能
3.1信号在网线和集线器中传输
3.1.1每个包都是独立传输的
3.1.2防止网线中的信号衰减很重要
3.1.3双绞线是为了抑制噪声
3.1.4集线器将信号发往所有线路
集线器将信号发送给所有连接在它上面的线路。
3.2交换机的包转发操作
3.2.1交换机根据地址表进行转发
交换机端口的MAC模块不具有MAC地址
交换机根据MAC地址表查找MAC地址,然后将信号发送到响应的端口
3.2.2MAC地址表的维护
3.2.3特殊操作
3.2.4全双工模式可以同时进行发送和接收
3.2.5自动协商:确定最优的传输速率
3.2.6交换机可以同时执行多个转发操作
3.3路由器的包转发操作
3.3.1路由器的基本知识
路由器的各个端口都具有MAC地址和IP地址
3.3.2路由表的信息
路由器根据“IP地址”判断转发目标。路由器会忽略主机号,只匹配网络号。路由表的子网掩码只表示在匹配网络包目标地址时需要对比的比特数量。
3.3.3路由器的包接受操作
路由器的端口都具有MAC地址,只接受与自身地址匹配的包,遇到不匹配的包则直接丢弃。
3.3.4查询路由表确定输出端口
通过路由器转发的网络包,其接收方MAC地址为路由器端口的MAC地址。
3.3.5找不到匹配路由是选择默认路由
路由表中子网掩码为0.0.0.0的记录表示“默认路由”
3.3.6包的有效期
3.3.7通过分片功能拆分大网络包
3.3.8路由器的发送操作和计算机相同
路由判断下一个转发目标的方法如下。
如果路由表的网关列内容为IP地址,则该地址就是下一个转发目标。
如果路由表的网关列内容为空,则IP头部中的接收方IP地址就是下一个转发目标。
路由器也会使用ARP来查询下一个转发目标的MAC地址。
3.3.9路由器与交换机的关系
IP(路由器)负责将包送达通信对象这一正题郭恒,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的。
3.4路由器的附加功能
3.4.1通过地址转换有效利用IP地址
3.4.2地址转换的基本原理
3.4.3改写端口号的原因
3.4.4从互联网访问公司内网
3.4.5路由器的包过滤功能
小测试
1局域网总使用的双绞线中为什么要将信号线缠绕在一起?
2将输入的信号广播到所有端口上的设备是交换机还是集线器?
3用来指定网络号和主机号比特数的值叫什么?
4将大网络包进行拆分的功能叫什么?
5路由器的路由表中有事可以看到子网掩码为0.0.0.0的记录,这代表什么意思?
3.5网络术语其实很简单
集线器和路由器,换个名字身价翻倍?
小测试答案
1为了抑制噪声的影响
2集线器
3子网掩码
4分片
5默认路由
第4章 通过接入网进入互联网内部——探索接入网和网络运营商
问题(判断题)
1第一个采用包机制的网络就是互联网的前身ARPANET
2ADSL方式中,从家里到电话局的线路费用包含在电话费中,因此可以降低上网费
3光纤的通信速率之所以更快,是因为光信号的传播速度比电信号要快
答案
1正确。互联网通过技术更新一直在不断进化,大家可能会认为它是一种很新的网络,其实并非如此。互联网实际上是一种具有将近40年历史的“最古老的”包网络
2正确。ADSL的线路费用包含在电话费中,光纤的线路费用包含在上网费中,因此光纤的上网费高,电话费便宜
3错误。电信号和光信号传播的速度大体上相同,之所以电缆不如光纤通信速率高,是因为电信号在提升通信速率的同事,其衰减率也会提高(信号在传播过程中减弱),导致信号无法传到目的地。相对地,光信号本来的衰减率就很低,提高通信速率也并不会提高衰减率。此外,光纤能够进行高速通信。
探索之旅的看点
1ADSL接入网的结构和工作方式
2光纤接入网
3接入网中使用PPP和隧道
4网络运营商内部
5跨越运营商的网络包
4.1ADSL接入网的结构和工作方式
4.1.1互联网的基本结构和家庭公司网络是相同的
4.1.2连接用户与互联网的接入网
4.1.3ADSL modem 将包拆分成信元
互联网接入路由器会在网络包前加上MAC头部、PPPOE头部、PPP头部总共三种头部,然后发送给ADSL modem(PPPOE方式下)
ADSL modem将包拆分成信元,并转换成电信号发送给分离器
4.1.4ADSL将信元“调制”成信号
4.1.5ADSL通过使用多个波来提高速率
4.1.6分离器的作用
4.1.7从用户到电话局
4.1.8噪声的干扰
4.1.9通过DSLAM到达BAS
DSLAM具有ATM接口,和后方路由器收发数据时使用的是原始网络包拆分后的ATM信元。
BAS负责将ATM信元还原成网络包并转发到互联网内部。
4.2光纤接入网
4.2.1光纤的基本知识
4.2.2单模与多模
4.2.3通过光纤分路来降低成本
4.3接入网中使用的PPP和隧道
4.3.1用户认证和配置下发
4.3.2在以太网上传输PPP消息
PPPOE是将PPP消息装入以太网包进行传输的方式。
4.3.3通过隧道将网络包发送给运营商
4.3.4接入网的整体工作过程
互联网接入路由器通过PPPOE的发现机制查询BAS的MAC地址。
BAS下发的TCP/IP参数会被配置到互联网接入路由器的BAS端的端口上,这样路由器就完成接入互联网的准备了。
BAS在收到用户路由器发送的网络包之后,会去掉MAC头部和PPPOE头部,然后用隧道机制将包发送给网络运营商的路由器
4.3.5不分配IP地址的无编号端口
一对一连接的端口可以不分配IP地址,这种方式成为无编号。
4.3.6互联网接入路由器将私有地址转换成公有地址
4.3.7除PPPOE之外的其它方式PPPOA方式不添加MAC头部和PPPOE头部,而且是直接将包装入信元中。
还有一种DHCP方式,它不使用PPP,而是将以太网包直接转换成ADSL信号发送给DSLAM。
4.4网络运营商内部
4.4.1POP和NOC
网络包通过接入网之后,到达运营商POP的路由器。
4.4.2室外通信线路的连接
4.5跨越运营商的网络包
4.5.1运营商之间的连接
4.5.2运营商之间的路由信息交换
互联网内部使用BGP机制在运营商之间交换路由信息
4.5.3余公司网络中自动更新路由表机制的区别
4.5.4IX的必要性
4.5.5运营商如何通过IX互相连接
小测验
1什么是接入网?
2要使用ADSL服务,需要安装一个将电话信号和ADSL信号分开的设备,这个设备叫什么名字?
3和电话局距离越远,ADSL的通信速率越低,为什么?
4BAS(宽带接入服务器)与一般的路由器有什么不同?
5将多个运营商汇聚在一起相互连接的设备叫什么?
4.6网络术语其实很简单
名字叫服务器,其实是路由器。
小测验答案
1用于连接网络运营商的线路
2分离器
3因为离电话局越远,信号越弱
4BAS具有身份认证、向客户端下发IP地址等配置信息的功能
5互联网交换中心
第5章 服务器端的局域网中有什么玄机?
问题(判断题)
1当使用浏览器访问WEB服务器时,浏览器的通信对象不仅限于WEB服务器
2没有防火墙就不能连接到互联网。
3也有防火墙无法抵御的攻击
答案
1正确。浏览器有时候是和WEB服务器通信,有时候是和缓存服务器以及负载均衡器进行通信
2错误。防火墙并不是必须的,但是没有防火墙会增加风险。
3正确。防火墙不会检查通信数据的具体内容,因此无法抵御隐藏在通信数据内容中的攻击。
探索之旅的看点
1WEB服务器的部署地点
2防火墙的结构和原理
3通过将请求平均分配给多台服务器来平衡负载
4利用缓存服务器分担负载
5内容分发服务
5.1WEB服务器的部署地点
5.1.1在公司里部署WEB服务器
5.1.2将WEB服务器部署在数据中心
5.2防火墙的结构和原理
5.2.1主流的包过滤方式
5.2.2如何设置包过滤的规则
5.2.3通过端口号限定应用程序
5.2.4通过控制位判断连接方向
5.2.5从公司内网访问公开区域的规则
5.2.6从外部无法访问公司内网
5.2.7通过防火墙
包过滤方式的防火墙可以根据接收方IP地址、发送方IP地址、接收方端口号、发送方端口号、控制位等信息来判断是否允许某个包通过。
5.2.8防火墙无法抵御的攻击
5.3通过将请求平均分配给多台服务器来平衡负载
5.3.1性能不足时需要负载均衡
5.3.2使用负载均衡器分配访问
5.4使用缓存服务器分担负载
5.4.1如何使用缓存服务器
5.4.2缓存服务器通过更新时间管理内容
5.4.3最原始的代理——正向代理
5.4.4正向代理的改良版——反向代理
5.4.5透明代理
5.5内容分发服务
5.5.1利用内容分发服务分担负载
5.5.2如何找到最近的缓存服务器
5.5.3通过重定向服务器分配访问目标
5.5.4缓存的更新方法会影响性能
小测验
1现在主流的防火墙方式叫什么?
2当防火墙需要确定应用程序种类时要检查什么信息?
3用于分担WEB服务器负载,将访问分配到多台服务器上的设备叫什么?
4部署在服务器端的代理是正向代理还是方向代理?
5在互联网中部署多台缓存服务器,并将其租借给WEB服务器运营者的服务叫什么?
5.6网路术语其实很简单
当通信线路变成局域网。
小测验答案
1包过滤方式
2端口号
3负载均衡器
4反向代理
5内容分发服务
第6章 请求到达WEB服务器,响应返回浏览器——短短几秒的“漫长旅程”迎来终点
问题(判断题)
1服务器向客户端返回的响应消息不一定和客户端向服务器发送的请求消息通过相同的路由传输。
2客户端计算机也可以当做服务器来使用
3一台服务器可以同时用作WEB服务器和邮件服务器
答案
1正确。路由器和交换机是不考虑请求包和响应包之间的关联的,而是将它们作为独立的包来对待,因此请求和响应是有可能通过不同的路由来传输的,具体走哪条路由,是由路由器的路由表和交换机的地址表中的配置来决定的。
2正确。无论任何计算机,协议栈的功能和工作方式都是相同的,因此客户端甲酸剂也可以当做 服务器来用。不过,客户端计算机和服务器相比其性能和可靠性比较差,这一点必须要注意。
3正确。由于可以通过端口号来区分服务器上的应用程序,所以一台服务器上可以同时运行多个服务器程,不仅限于web和邮件。当然,这样做会增加服务器的负载,因此必须注意服务器的性能。
探索之旅的看点
1服务器概览
2服务器的接受操作
3web服务器程序解释请求消息并作出相应
4浏览器接受响应消息并显示内容
6.1服务器概览
6.1.1客户端与服务器的区别
6.1.2服务器程序的结构
6.1.3服务器端的套接字和端口号
使用描述符来指代套接字的原因如下
1等待连接的套接字中没有客户端IP地址和端口号
2使用描述符这一种信息比较简单
6.2服务器的接受操作
6.2.1网卡将接收到的信号转换成数字信息
网卡的MAC模块将网络包从信号还原为数字信息,校验FCS并存入缓冲区。
网卡驱动会根据MAC头部判断协议类型,并将包交给相应的协议栈。
6.2.2IP模块的接受操作
协议栈的IP模块会检查IP头部
1判断是不是发送给自己的2判断网络包是否经过分片3将包转交给TCP模块或者UDP模块
6.2.3TCP模块如何处理连接包
如果受到的是发起连接的包,则TCP模块会
1确认TCP头部的控制位SYN
2检查接收方端口号
3位相应的等待连接套接字复制一个新的副本
4记录发送发IP地址和端口号等信息
6.2.4TCP模块如何处理数据包
收到数据包时,TCP模块会
1根据收到的包的发送方IP地址、发送方端口号、接收方IP地址、接收方端口号找到相对应的套接字
2将数据块平合起来并保存在接受缓冲区中
3向客户端返回ACK
6.2.5TCP模块的断开操作
6.3web服务器程序解释请求消息并作出响应
6.3.1将请求的URI转换为实际的文件名
6.3.2运行CGI程序
6.3.3web服务器的访问控制
6.3.4返回响应消息
6.4浏览器接受响应消息并显示内容
6.4.1通过相应的数据类型判断其中的内容
6.4.2浏览器显示网页内容!访问完成!
小测验
1在包收发操作中,服务器和客户端区别是什么?
2当包到达服务器时,网卡会接收信号并通知CPU,此时使用的机制叫什么?
3web服务器可以同时处理多个客户端的访问,这里利用了操作系统的什么功能?
4当需要对web服务器的访问进行限制的时候,可以根据哪些条件来判断是否允许访问?
5web服务器返回的数据包括文档、图片等多种类型,客户端如何判断返回数据的不同类型?
6.5网络术语其实很简单
Gateway是通往异世界的入口
小测试答案
1没有区别
2中断
3多任务和多线程
4 a客户端IP地址b客户端域名c用户名和密码
5原则上根据响应消息的content-type头部字段的值来判断