T参考: 一步一步学习IP路由流程
第一章 网络基础知识
OSI参考模型将网络通信分为7层,对通信中的必要功能进行了归纳:
1、应用层: 为应用程序提供通信的细节 如:文件传输、电子邮件
2、表示层:将应用信息转换为适合网络传输的格式或将下一层数据转换为应用层格式数据 如:utf-8编码转换
3、会话层:负责建立和断开连接及数据的分割等
4、传输层:保证数据的可靠性传输
5、网络层:负责路由和寻址将数据传到目标地址 。
6、数据链路层:负责物理层面上的互连、节点之间的传输(只负责同一局域网中的分发)。一般交换机用于数据链路层直接的数据传输
7、物理层:将比特流(0、1)与电压之间的转换
分组交换是指计算机将数据发送给路由器,路由器将数据缓存再发送到目标计算机
MAC地址和IP地址的关系:
MAC用于同一网络中的识别、ip地址用于网络寻址。IP地址包含:网络号及主机号,网络号相同表明处于同一网络中
路由器和交换机的关系:
交换机:用于数据链路层的转发
路由器:用于网络层的转发
网络的构成要素:
网卡:任何计算机连接网络必须通过网卡
中继器:用于转换、放大网络信号。如电缆和光缆的信号转换、长距离网络的信号放大
交换机:用于数据链路层连接的网络连接并提供数据校验保证数据有没有损坏(根据mac地址就行处理)
路由器:用于连接不同的数据链路层。提供ip的寻址
4~7层交换机:指传输层到应用层的数据交换。比如:web服务器的负载均衡、防火墙等
网关:用于传输层以上的数据的转发和转换。比如:代理服务器、防火墙
网络的构成:由骨干网络和边缘网络组成。
骨干网络:一般是指用高速路由器传输大量数据
边缘网络:由很多普通路由器和交换机构成,他要经过骨干网络才能连接到网络
移动网络构成:
第二章 tcp/ip协议基础
TCP协议标准是由IETF制定并由RFC文档进行记录
TCP协议与OSI协议模型的关系
物理层指一切看见的物理设备
数据链路层指设备的驱动程序来实现通信
网络层指在不同网络间通过寻址找到路由路径
传输层指通过tcp和udp来实现真正的数据传输
TCP各个分层间的构成关系
每个分层中都会在,发送的数据包中附加上一个首部
经过数据链路的包都至少会包含发送端和接收端的地址
数据包的接收处理
数据链路层:判断接收到包的目标MAC地址是否为自身地址。若不是则丢弃,若是则传递到IP层
IP层:判断包首部的IP地址是否为自身地址。若是则根据传输层的协议类型传到TCP层或UDP层
TCP层:对包的数据进行校验和并判断顺序是否正确,接收完毕后发送回执确认
应用层:对传输层的数据处理
第三章 数据链路
数据链路的段指一个被分割的网络
网络拓扑指网络连接和构成的形态:总线型、星型、环型、网状型
MAC地址用于在数据链路中主机的识别
数据链路网络的类型:
共享介质:共享同一种通信介质 如:对讲机
非共享介质:独自占用通信介质 如:交换机
半双工通信:同时只能一方进行数据发送接收
全双工通信:可以多方同时进行数据发送接收
交换机的自学过程:
交换机内部有个记录各个端口与MAC地址对应交换表,当有数据送到对应的MAC地址时,则在交换表中增加一条记录
交换机的转发方式:
储存转发:校验数据帧后再进行转发
直通转发:当获取到对应的mac地址端口后直接开始转发
环路检测技术:环路是指某台设备出现问题导致数据包不停的被网络中循环发送
生成树方式:定时的检查端口是否正常,若不正常重新生成交换表
源路由法:在发送帧中写入目标地址RIF,即使某个设备损坏也能到到目标地址
以太网:现在终端与交换机一般采用独占电缆的方式实现以太网通信
以太网的传输速率的表现方式是以时钟频率进行:
比特、字节、8位字节关系
以太网帧的格式:前导码+帧本体
第四章 IP协议
ip层和数据链路层的区别:数据链路层提供两个设备之间的通信,ip层提供不同网络的之间的通信
IP地址:用于在所有网络中识别目标主机的地址
路由控制:为使数据包从源地址到目标地址所采用的控制方法
跳:数据链路层下从源mac地址到达目标mac地址的网络路径,路由控制由许多跳构成
多跳路由:路由器在转发数据包时只指定下一个主机或路由的ip地址,而非全部路径
路由控制表:为了将数据包发送给目标主机,所有主机有一个路由控制表,记录下一步IP包将发送到哪个路由器
数据链路层抽象化
IP层对不同的链路层进行了抽象化,对IP层最大的区别就是MTU(最大传输单位)。当数据包超过MTU,IP层将对其进行分片处理和多次传输并对上层来说是无感知的。
IP协议面向无连接方式以求达到简化和提速的目的
IP地址的构成
网络地址+主机地址:网络地址表示不同网络间的地址,主机地址表示同一个网络间的不同主机地址 形如:192.168.10.5/24
IP协议网络地址的格式
将32位二进制以8位一组,分为4组并以“."为分割,最后转换为10进制
广播地址
用于在同一链路之间不同主机之间发送数据包。分为:
本地广播:同一网络间的数据发送
直接广播:不同网络间的数据发送(一般被路由屏蔽)
IP多播
用于不同网络间的数据群发(可以通过路由)
子网掩码
对应IP部分全部为1,对应主机部分全部为0,这样可以用于表示ip的地址范围就扩大。
全局地址和私有地址
即使通过子网掩码IP地址不够用,所以只有一部分路由主机使用全局地址来连接互联网,子网网络的主机采用私有地址。
全局地址现在一般通过isp运营商获取,isp向ICANN获取。
IP地址与路由控制
IP地址需要路由控制表才能到达下一个路由控制器。路控制表记录着目标地址与路由器的映射关系。
路由控制聚合 指对类似的IP地址进行合并,减少路由ip地址的查找时间
IP报文的分片与重组
由于在路由中MTU的不同,路由器可以对数据包进行分片传输。由于数据包存在多次的转发、丢包情况,所以只在终端重组。
路径MTU发现
为了避免分片,主机通过某种手段获取链路中的最小mtu到达不用发片的目的
IPv4首部
标识:用于分片时的重组
位偏移:用于分片重组时各个数据的位置偏移量
首部校验和:用于校验IP的首部有误数据丢失
第五章 IP协议相关技术
主机识别码:在中可以通过主机识别码在host文件来映射ip地址,当ip地址更新时就需要更新host文件
Dns域名:它呈现出树状的层级结构,每个层级之间有父子关系
域名服务器
保存着域名和ip的映射关系,当主机的域名和ip关系更新时就需要更新所有域名服务器
根域名服务器
所有的域名服务器都需要在根服务器下进行注册才能让其他域名服务器进行查找
解析器
进行dns查询的主机或软件。一般主机都要注册一个以上域名服务器。
DNS查询流程
首先向上一级查询dns对应ip,若没有则再向上进行查找,直到查找到相应的ip。查找后会在主机进行缓存,方便以后快速查找
DNS中的其他记录
PTR:从IP地址检索域名
A记录:主机名与ip的映射
NS记录:上下层域名服务器ip地址映射
ARP协议
通过发送ARP数据包找到ip对应的mac地址
第六章 TCP与UDP
根据IP协议中的协议类型字段判断它的上一层是tcp还是udp
tcp协议通过端口号来确定发送数据到哪个端口
TCP和UDP的区别
tcp可以确保数据正确到达,效率较低
udp不能确认数据到达,效率高
TCP通过源IP、目标IP、源端口号、目标端口号、协议号来识别一个通信
端口分配
通过标准制定(如http)范围:0~1024
通过注册:1024~49151
时序分配法:通过系统随机进行分配
TCP收到数据后通过“确认到达”来回复发送主机数据已收到来保证数据不丢失
TCP发送端带有数据的序列号及长度,接收端接收到后发送下个数据的开始序列号作为确认应答
“重发超时”即当TCP发送端等待ACK的超时时间,若超过即进行重发
重发超时的长短根据网络情况及报文的往返时间进行动态的修正。开始以6秒为基础,以0.5秒为单位进行修正。若多次重发未响应则认为已经断开
TCP的三次握手
通过发送SYN表示请求建立连接,接收端接收到请求后发送SYN和ACK包进行反请求,发送端接收到后发送ACK进行确认
TCP的四次撒手
通过发送FIN请求断开请求,接收端收到请求后发送ACK同时发送FIN进行反请求,发送端接收到后再次发送ACK进行确认
TCP以段为发送单元
段的大小为MSS(最大消息长度)。MSS的大小通过三次握手来在两端之间即使出
窗口控制
当以段为单位进行确认答复时,通信效率非常低下。通过窗口控制可以不必等待每个段的答复,而是连续发送几个段然后再等待答复。
滑动窗口控制
以窗口控制为基础,当某个段的确认答复到达时,窗口移动到该段前面到达不必重发的目的
窗口控制的重发机制
接收端收到而发送端未收到确认回复:接收端会缓存当前数据,并会发送下一个期待的序列号,
若序列号大于未收到确认回复的序列号则不必重发
接收端未收到:接收端会多次发送期望序列号的确认回复,若超过三次则发送端会进行重发
流控制即窗口大小控制
当接收端接收能力下降时(如:高负荷时),接收端可以通过tcp的窗口大小字段来缩小窗口值达 到控制流的消息。
若接收端长时间为收到确认回复,它会发送一个窗口探测包获取最新窗口大小
拥塞窗口控制即根据网络情况动态控制窗口大小
发送数据时会根据接收端接受窗口和拥塞窗口的最小值
拥塞窗口的大小为:在启动时为1当每次收到确认回复时会加1,直到到达拥塞窗口阀值。
到达阀值后会呈现拥塞窗口涨幅会收窄呈直线增长方式
在超时重发时拥塞窗口的启动值会重设置为1
在3次确认回复时启动值为当时窗口大小一半+3
TCP 协议的构成
序列号:初始化由随机数生成,发送端每次发送就累加其大小。
数据偏移:指tcp的数据部分的偏移位数
保留:为以后扩展使用
控制位:用于表示tcp的某些属性 如:是否为SYN包等
窗口大小:用于表示每次最大的窗口的大小
校验和:用于校验数据是否被破坏
紧急指针:用于表示暂停通信的字段