导图社区 网络是怎样连接的
网络是怎样连接的:第一章 浏览器生成消息,第二章 用电信号传输TCP/IP数据,第三章 从网线到网络设备,第四章通过接入网进入互联网内部等等
编辑于2022-05-30 14:09:12网络是怎样连接的
第一章 浏览器生成消息
1.1 生成HTTP请求消息
1.1.1 探索之旅从输入网址开始
URL
URL定义
URL功能
URL元素
浏览器
综合性客户端软件
1.1.2 浏览器先要解析URL
URL格式随协议不同而不同
1.1.3 省略文件名的情况
省略文件名并以/结尾
文件名和/符号均省略
将目录末尾的/省略
1.1.4 HTTP基本思路
HTTP基本思路
请求消息
对什么(URI)
进行怎样的操作(方法)
web服务器对消息解析
响应消息
状态码
头字段
网页数据
URI
存放网页数据的文件名
存放CGI程序的文件名
方法
web服务器需要完成的工作
POST
GET
1.1.5 生成HTTP请求消息
HTTP消息格式
请求行
方法
URI
消息头
额外的详细信息
消息体
1.1.6发送请求后会收到响应
响应消息格式
状态码,状态短语
消息头
消息体
1.2向DNS服务器查询web服务器ip地址
1.2.1ip地址基本知识
操作系统
发送消息
TCP/IP
子网
路由器
IP地址
号
网络号
室
主机号
ip地址格式
子网掩码
1.2.2域名和ip地址并用的理由
使用域名更加方便
使用IP地址更加高效
DNS域名服务系统
1.2.3Socket库提供查询IP地址的功能
查询IP地址
询问DNS服务器
Socket库
定义
程序组件
解析器
1.2.4通过解析器向DNS服务器发出查询
解析器调用
向DNS发送查询消息
接收响应消息
取出IP地址
1.2.5解析器内部原理
控制流程转移
解析器工作流程
生成查询消息
委托协议栈发送消息
协议栈传递响应消息
1.3全世界DNS服务器的大接力
1.3.1DNS服务器的基本工作
接收查询消息
域名
CLASS
记录类型
A
MX
从保存的记录中查找
返回响应数据
1.3.2域名的层次结构
域名层次结构
定义
域与下级域
与DNS服务器的关系
1.3.3寻找相应的DNS服务器并获取IP地址
查找相应的DNS服务器步骤
上级域
根域
根域DNS保存于所有DNS
上级DNS保存下级DNS服务器信息
1.3.4通过缓存加快DNS服务器响应
缓存
记住查询过的域名
减少查询时间
记住查询结果不存在的域名
快速响应
有效期
响应结果来源
DNS服务器
缓存
1.4委托协议栈发送消息
1.4.1数据收发操作概述
收发数字信息
调用Socket库程序组件
连接数字通道
建立管道
套接字
断开管道,删除套接字
1.4.2创建套接字阶段
收发数据操作
创建套接字
调用Socket
协议栈返回描述符
识别套接字
描述符
1.4.3连接阶段:把管道接上去
调用connect程序组件
描述符
服务器IP
端口号
端口号与描述符的作用区别
1.4.4通信阶段:传递消息
应用程序准备发送的数据
调用write程序组件
指定描述符
发送数据
协议栈发送数据
服务器接收数据
返回响应消息
调用read程序组件
接收缓存区
1.4.5断开阶段:收发数据结束
web调用close程序组件
断开阶段
web服务器断开连接
套接字断开阶段
read告知浏览器收发结束,连接断开
浏览器调用close程序组件
第二章 用电信号传输TCP/IP数据
2.1创建套接字
2.1.1协议栈的内部结构
TCP/IP软件分层结构
应用程序层
Socket库
操作系统层
协议栈
TCP UDP
IP协议
ICMP协议
ARP协议
驱动程序层
硬件层
2.1.2套接字的实体就是通信控制信息
协议栈控制信息
IP地址
端口号
通信操作进行状态
2.1.3调用socket时的操作
消息收发操作
创建套接字
分配内存空间
存入控制信息
描述符
2.2连接服务器
2.2.1连接是什么意思
连接
通信双方交换控制信息
IP地址
端口号
2.2.2负责保存控制信息的头部
两类控制信息
头部记录信息
TCP头部
以太网头部
IP头部
套接字记录信息
控制协议栈操作信息
2.2.3连接操作的实际过程
调用Socket中的connect
提供控制信息
将信息传递给TCP模块
TCP模块间交换控制信息
客户端创建头部
头部控制位SYN比特设置为1
TCP信息传递给IP模块并委托发送
IP模块执行网络包发送
服务器TCP接收头部信息
服务器TCP返回响应
网络包返回客户端
2.3收发数据
2.3.1将HTTP请求消息交给协议栈
应用程序调用write
数据交给协议栈
协议栈执行发送操作
网络包容纳数据长度
MTU
MSS
等待时间计时器
2.3.2对较大的数据进行拆分
数据长度超出MSS时
对数据进行拆分
数据块添加TCP头部
IP模块执行数据发送
2.3.3使用ACK号确认网络包已收到
网络包送达确认操作
计算数据包字节数
序号
序号初始值
未收到ACK号
重新发送数据包
数据双向传输
双向操作方式相同
2.3.4根据网络包平均往返时间调整ACK号等待时间
超时时间
返回ACK号等待时间
动态调整等待时间
2.3.5使用窗口有效管理ACK号
等待ACK号的时间
接收缓存区
滑动窗口
接收方通过TCP告知接收量大小
窗口字段
2.3.6ACK与窗口的合并
提高数据收发效率
更新窗口时机
缓存区剩余容量增大时
返回ACK号时机
收到数据后立刻
合并发送通知包
2.3.7接收HTTP响应消息
调用read程序
获取响应消息
协议栈执行后续操作
2.4从服务器断开并删除套接字
2.4.1数据发送完毕后断开连接
应用程序选择断开时机
调用close程序
FIN比特设为1
IP模块发送数据
另一方套接字标记进入断开操作
返回ACK号
调用close程序
2.4.2删除套接字
删除套接字时机
误删套接字的危害
2.4.3数据收发操作小结
创建套接字
发起连接操作
数据收发阶段
执行断开操作
删除套接字
2.5IP与以太网的包收发操作
2.5.1包的基础知识
网络包
头部
MAC头部
IP头部
TCP头部
数据
IP模块将包发送
网络转发设备
网络包转发过程
集线器
路由器
2.5.2包收发操作概览
TCP委托IP模块发送包
IP模块添加头部
IP头部
MAC头部
包交给网络硬件
网卡
接收包 返回包
2.5.3生成包含接收方IP地址的IP头部
IP头部
IP地址
网卡IP地址
路由表
协议号
2.5.4生成以太网用的MAC头部
MAC头部
MAC地址
以太类型
查询MAC地址
2.5.5通过ARP查询目标路由器的MAC地址
ARP地址解析协议
广播
ARP缓存
ARP缓存更新
2.5.6以太网的基本知识
以太网通信技术
以太网原型
中继式集线器变体
交换式集线器结构
收发器
以太网3个性质
包发送到MAC头部的接收方MAC地址代表目的地
用发送方MAC地址识别发送方
用以太类型识别包的内容
2.5.7将IP包转换成电或光信号发送出去
以太网包收发操作
IP网络包的数字信息转换成光电信号
网卡执行转换操作
网卡
网卡初始化
网卡驱动程序
读取MAC地址
2.5.8给网络包再加3个控制数据
包转换为电信号
网卡驱动从IP模块取包
向MAC模块发送发送包命令
MAC模块工作
报头
确定包的读取时机
起始帧分界符SFD
FCS
通过电信号读取数据
2.5.9向集线器发送网络包
发送信号操作
集线器半双工模式
信号碰撞
阻塞信号
数字信息转换成电信号
由PHY MAU信号收发模块发送出去
网络传输速率
交换机全双共模式
2.5.10接收返回包
接收网络包
接收全部信号
判断是否丢弃包
网卡通知计算机
中断
网卡驱动取出包
网卡将包交给协议栈
协议栈将包发给应用程序
2.5.11将服务器的响应包从IP传递给TCP
Web服务器返回网络包
TCP/IP协议栈处理
IP模块
检查IP头部
检查格式
查看接收方IP地址
ICMP
分片
还原重组
包交给TCP模块
2.6UDP协议的收发操作
2.6.1不需要重发的数据用UDP发送更高效
TCP与UDP
UDP适用于短数据
2.6.2控制用的短数据
UDP收发数据
添加UDP头部
交给IP进行发送
UDP相对于TCP删除的机制
2.6.3音频和视频数据
UDP适用
第三章 从网线到网络设备
3.1信号在网线和集线器中传输
3.1.1每个包都是独立传输的
网络包转发
集线器
路由器
交换机
转发设备
独立的概念
3.1.2防止网线中的信号衰减很重要
PHY
将包转换成电信号
信号衰减
损失率
噪声
失真
3.1.3“双铰“是为了抑制噪声
双绞线
拧麻花
抑制噪声
原因
扭铰间隔
正负信号线
噪声
产生原因
电磁波
网线之外设备泄露
信号线泄露
串扰
影响
波形失真
3.1.4集线器将信号发往所有线路
集线器
内部结构
交叉接线
MDI/MDI-X
中继电路
广播
信号整形
错误抑制
3.2交换机的包转发操作
3.2.1交换机根据地址表进行转发
交换机
内部结构
MAC地址表
交换电路
信号转发
网线接口
信号转换
检验错误
检擦地址
发送到相应端口
交换电路
信号线排列
网格状
交叉点
交换开关
3.2.2MAC地址表的维护
维护操作
记录发送方MAC地址
删除记录表中某条记录的操作
过时记录
3.2.3特殊操作
目标端口与源端口相同
直接丢弃
地址表找不到指定MAC地址
具有该地址的设备未向交换机发送过包
地址被删除
包发送到除源端口外所有端口
不会产生问题
接收方MAC地址是一个广播地址
包发送到除源端口外所有端口
3.2.4全双工模式可以进行发送和接收
全双工模式
交换机特有
同时进行收发操作
停用碰撞检查
碰撞
信号在集线器内部混杂
以太网重要特征
不用集线器就不会发生
3.2.5自动协商:确定最优的传输速率
切换全/半双工模式
手动切换
自动切换
自动协商
连接脉冲
监测是否正常工作
特定排列连接脉冲
自动协商原理
3.2.6交换机可同时执行多个转发操作
交换机只转发到特定端口
空闲端口
集线器广播到所有端口
3.3路由器的包转发操作
3.3.1路由器的基本知识
路由器转发包
路由器内部结构
转发模块
判断包的转发目的地
端口模块
负责包的收发操作
端口模块安装硬件
局域网
ADSL
FTTH
转发流程
委托端口硬件接收包
转发模块查询路由表判断转发目标端口
转移到相应端口
委托端口模块发送包
3.3.2路由表中的信息
判断转发目标
交换机
根据MAC地址
路由器
根据IP地址
路由表
目标地址
匹配IP网络号
子网掩码
判断网络号的比特数
路由聚合
网关
接口
跃点计数
表示距离目标地址距离远近
路由表维护
人工维护路由记录
路由协议机制
RIP
OSPF
BGP
3.3.3路由器的包接收操作
路由器工作过程
路由器接收网络包
错误检验
丢弃包开头的MAC头部
查询IP进行转发
包的发送操作
3.3.5找不到匹配路由时选择默认路由
找不到转发目标时丢弃包
子网掩码设置为0.0.0.0
默认路由
3.3.6包的有效期
更新IP头部的TTL(生存时间)
TTL表示包的有效期
防止包陷入死循环
3.3.7通过分片功能拆分大网络包
PPPoE协议
分片
判断MTU
根据IP标准字段判断能否分片
拆分后的数据添加IP头部
更新IP头部部分字段
3.3.8路由器的发送操作和计算机相同
包的发送
根据输出端口类型
以太网发送操作
包的前面添加MAC头部
设置一些字段
将包转换成电信号
3.3.9路由器与交换机的关系
路由器基于IP设计
交换机基于以太网设计
路由器将包的传输工作委托给交换机进行
3.4路由器的附加功能
3.4.1通过地址转换有效利用IP地址
地址转换
互联网地址发展
私有地址
用于内网
公有地址
固定地址
包过滤
3.4.2地址转换的基本原理
改写
IP地址
端口号
地址转换设备
记录改写前后的信息
将包发送给内网
查找公有地址和私有地址对应信息
3.4.3改写端口号的原因
只改写地址时
此时公有地址和私有地址必须一一对应
改写端口号
提高公有地址利用率
3.4.4从互联网访问公司内网
必须公司允许
防止非法入侵
分配公有地址
手动添加服务器的私有地址
3.4.5路由器的包过滤功能
包过滤
判断转发包或丢弃包
防火墙
防止非法入侵
第四章通过接入网进入互联网内部
4.1ADSL接入网的结构和工作方式
4.1.1互联网的基本结构和家庭、公司网络是相同的
转发设备
路由器
路由维护方式
距离
4.1.2连接用户与互联网的接入网
互联网包转发与以太网几乎相同
互联网接入路由器
接入网规则
接入网方式
ADSL
FTTH
CATV
电话线
4.1.3ADSL Modem将包拆分成信元
ADSL接入网结构
BAS
互联网接入路由器
MAC头部
PPPoE头部
PPP头部
Modem(调制解调器)
信元
数据块
头部与数据
ATM通信技术
网路运营商(ISP)
4.1.4ADSL将信元“调制”成信号
正弦波调制技术
正交振幅调制(QAM)
振幅调制(ASK)
振幅大小对应数字
相位调制(PSK)
相位偏差对应数字
4.1.5ADSL通过使用多个波来提高速率
波的合成
滤波器分离
增加可表示的比特数
比特分配
频段
距离
噪声
握手
4.1.6分离器的作用
分离器
工作时机
信号从电话线传入
分离电话和ADSL信号
过滤高频信号
防止电话对ADSL产生干扰
重新训练
4.1.7从用户到电话局
配盘线
IDF
MDF
保安器
电话线
电话电缆
电缆隧道
4.1.8噪声的干扰
噪声频率相同信号无法读取
可用信号数量减少
速率下降
防ISDN干扰技术
4.1.9通过DSLAM到达BAS
DSLAM
电信号还原成信元
集成ADSL Modem功能
ATM接口
BAS包转发设备
可接收ATM信元
可将ATM信元还原成原始包
隧道专用头部
隧道专用路由器
取出隧道头部
取出IP包
转发到互联网内部
4.2光纤接入网(FTTH)
4.2.1光纤的基本知识
FTTH
基于光纤的接入网技术
一般使用单模光纤
光纤
光纤结构
双层结构
纤维状透明材质
玻璃
塑料
纤芯传导光信号
光信号
亮为1
暗为0
4.2.2单模与多模
光纤
透光率
折射率
纤芯直径
单模光纤
多模光纤
可传导多条光线
光信号传导
入射角度
特定角度
相位
干涉
边界反射
相位变化
信号失真与反射次数相关
4.2.3通过光纤分路来降低成本
FTTH
用一根光纤直接从用户端连接到电话局
以太网电信号转换成光信号
光信号到达多路光纤收发器
光信号转成电信号
BAS端口接收后发往互联网
在用户附近电线杆安装分光器
光纤分路
ONU光网络单元
OLT光线路终端
波分复用
4.3接入网中使用的PPP和隧道
4.3.1用户认证和配置下发
互联网登录
BAS登录操作端口
PPPoE
PPP拨号上网
用户向运营商接入点拨打电话
输入用户名和密码
用户名和密码发送到认证服务器
RADIUS
RAS
认证服务器返回配置信息并下发给用户
计算机分配公有地址
用户计算机根据信息配置IP地址等参数
完成TCP/IP网络包收发准备
4.3.2在以太网上传输PPP消息
传输思路与将IP包装入以太网包传输相同
PPP协议无报头和FCS等元素
无定义信号的格式
HDLC协议帮助传输
HDLC本用于在专线中传输网络包
PPPoE
将PPP消息装入以太网包进行传输
4.3.3通过隧道将网络包发送给运营商
BAS可以使用隧道方式传输网络包
隧道类似于套接字间建立的CP连接
隧道实现方式
TCP连接
在两台隧道路由器间建立TCP连接
连接两端套接字当作路由器端口
通过端口收发数据
基于封装的实现方式
4.3.4接入网的整体工作过程
接入路由器开始连接
配置运行商分配信息
根据PPPoE发现机制寻找BAS
基于广播
用户认证和下发配置
CHAP
PAP
客户但发送网络包
网络包到达BAS并通过隧道机制发送
PPP包到达网络运营商的路由器
4.3.5不分配IP地址的无编号端口
一对一连接端口
不分配IP地址
无编号
4.3.6互联网接入路由器将私有地址转换成公有地址
地址转换
应用程序是否需要地址转换
4.3.7除PPPoE之外的其他方式
PPPoA
直接将PPP消息装入信元
一体化
将计算机和ADSL Modem用USB接口连接
将ADSL Modem和路由器整合成一台设备
优点
MTU更大,传输效率高
DHCP
原理
4.4网络运营商的内部
4.4.1POP和NOC
POP接入点
互联网入口处
包括了各种类型的路由器
专线
一般路由器
电话,ISDN
RAS路由器
PPPoE
一般路由器与BAS相连
接入网处路由器端口多且便宜
NOC网络运行中心
配备高性能路由器
可以认为NOC就是规模扩大后的POP
4.4.2室外通信线路的连接
NOC与POP连接
光纤连接
光纤复用
光纤租借
租借通信线
4.5跨越运营商的网络包
4.5.1运营商之间的连接
路由信息自动化管理
转发目标
POP
NOC
查找对方运营商路由信息
4.5.2运营商之间的路由信息交换
BGP边界网关协议
获取相连路由器的路由信息
写入路由表
将自身路由信息告知对方
转接与非转接(对等)
4.5.3与公司网络中自动更新路由表机制的区别
公司网络
寻找最短路由并转发包
所有路由器平等对待
运营商网络
指定路由交换对象
增加判断因素,设置优先级
4.5.4IX的必要性
IX互联网交换中心
减少线路数量
4.5.5运营商如何通过IX互相连接
IX所在地需要高安全性
IX核心
二层交换机
具有大量高速以太网端口
运营商路由器连接到IX核心交换机
光纤延长连接
通信线路连接
第五章服务器端的局域网有什么玄机
5.1We服务器的部署地点
5.1.1在公司里部署Web服务器
防火墙
指定网络包
5.1.2将Web服务器部署在数据中心
部署在公司
部署在运营商数据中心
访问速度快
安全性高
附加服务
数据中心
与NOC直接相连
5.2防火墙的结构和原理
5.2.1主流的包过滤方式
包过滤式防火墙最为普及
5.2.2如何设置包过滤的规则
根据包的起点和终点
5.2.3通过端口限定应用程序
增加判断条件
TCP头部端口号
UDP头部端口号
5.2.4通过控制位判断连接方向
过滤TCP连接操作的第一个包
对DNS服务器的访问是特殊的
因为UDP协议没有连接操作
5.2.5从公司内网访问公开区域的规则
设置相应的包过滤规则
5.2.6从外部无法访问公司内网
包过滤防火墙
组织部分网络包
地址转换
5.2.7通过防火墙
被组织的包
丢弃
记录
分析入侵者手段
被允许的包
转发
无特殊操作
包过滤只是路由器包转发的附加操作
5.2.8防火墙无法抵御的攻击
需要检测包内容的攻击
修复漏洞
增加包检查的软件和设备
5.3通过将请求平均分配给对台服务器来平衡负载
5.3.1性能不足时需要负载均衡
解决网络包过多问题
分布式架构
采用多台服务器
DNS服务器进行分配
轮询
缺点
5.3.2使用负载均衡器分配访问
负载均衡器
IP替代服务器实际地址注册在DNS
分配访问判断条件
负载状态
性能比例
跨页面
相关性
5.4使用缓存服务器分担负载
5.4.1如何使用缓存服务器
系统按功能分成不同服务器
缓存服务器
代理机制
保存数据
加快数据返回
5.4.2缓存服务器通过更新时间管理内容
注册在DNS服务器
客户端向缓存服务器发送HTTP请求消息
缓存服务器检查消息内容
若不存在缓存数据
在HTTP头部添加Via字段
说明需要经过缓存服务器转发
判断需转发的Web服务器
根据请求消息的URI
5.4.3最原始的代理--正向代理
客户端一侧的缓存服务器
正向代理
缓存
防火墙
可以查看请求的内容
设置浏览器
5.4.4正向代理的改良版--反向代理
改善设置浏览器
URI目录名与Web服务器关联
5.4.5透明代理
查看请求消息包头部
可以转发一般请求消息
集合了正向与反向代理的优点
无需设置浏览器参数
无需在缓存服务器设置转发目标
放置在请求消息传输路径
5.5内容分发服务
5.5.1利用内容分发服务分担负载
缓存服务器放置位置
服务器端
减轻Web服务器负载
无法减少互联网流量
客户端
减小拥塞点的影响
Web服务器运营者无法控制
互联网边缘
内容分发服务
CDSP
5.5.2如何找到最近的缓存服务器
使用DNS服务器分配访问
不应采用轮询
根据路由信息估算距离
5.5.3通过重定向服务器分配访问目标
HTTP中Location头部字段
重定向
增大HTTP消息的交互次数
估算的距离精度较高
5.5.4缓存的更新方法会影响性能
影响缓存服务器的效率
改善方法
使缓存服务器的数据保持最新状态
静态与动态页面保存
第六章 请求到达Web服务器
6.1服务器概览
6.1.1客户端与服务器的区别
硬件和操作系统有所不同
网络相关部分大致相同
功能规格统一
用法有差异
程序结构差异
6.1.2服务器程序的结构
把握每个客户端的操作状态
一对一状态
程序
等待连接模块
创建套接字
进入等待连接状态
接收连接
移交完成连接的套接字
通信模块
使用套接字与客户端通信
通信结束后退出
6.1.3服务器端的套接字和端口号
连接操作无法做到左右对称
调用Socket库
客户端数据收发阶段
服务器收发阶段
服务器端具体工作过程
协议栈调用Socket创建套接字
调用bind将端口号写入套接字中
客户端发起连接操作指定的端口号
Web服务器使用80号端口
协议栈调用listen写入等待连接控制信息
协议栈调用accept接受连接
为等待连接的套接字复制副本
客户端套接字连接到该副本
套接字交给通信模块
分配接收包
判断接收套接字
根据双方端口号和IP地址
使用描述符指代套接字的原因
6.2服务器的接收操作
6.2.1网卡将接收到的信号转换成数字信息
接收操作
网卡接收信号并将其转换成数字信息
根据包末尾的FCS校验错误
检查接受方MAC地址
网卡通过中断将网络包到达的事件通知给CPU
网卡驱动运行
根据以太协议类型调用负责该协议的软件
6.2.2IP模块的接收操作
检查IP头部检查是否分片
检查协议号字段
转交给相应模块
6.2.3TCP模块如何处理连接包
对发起连接的包
确认TCP头部的控制位SYN
检查接受发端口号
复制套接字副本
记录发送方IP地址和端口号等信息
6.2.4TCP模块如何处理数据包
收到数据包时
根据信息找到相应套接字
数据块拼合并保存在缓冲区
向客户端返回ACK
6.2.5TCP模块的断开操作
断开操作与客户端相同
6.3Web服务器程序解释请求消息并作出响应
6.3.1将请求的URI转换为实际的文件名
read获取的数据内容是HTTP请求消息
请求消息包括“方法”和数据源的URI
虚拟目录
查询虚拟目录与实际目录的对应关系
将URI转化成实际的文件名
6.3.2运行CGI程序
URI指定文件内容
文档或图片
将文件内容作为响应消息返回
程序
程序输出数据返回客户端
运行CGI程序
程序处理数据放在请求消息
检查指定文件是不是程序
返回输出的数据
6.3.3Web服务器的访问控制
服务器可以设置访问规则
客户端IP地址
客户端域名
用户名和密码
6.3.4返回响应消息
与客户端发送请求消息的过程相同
6.4浏览器接收响应消息并显示内容
6.4.1通过响应的数据类型判断其中的内容
客户端接收消息并取出响应消息
消息转交给浏览器
浏览器显示内容
判断数据类型
Content-Type
6.4.2浏览器显示网页内容,访问完成
判断数据类型
调用显示内容的程序
不同类型数据对应不同程序