综述
因特网部件图例
Internet Service Provider,简称ISP
交换方式
分组交换
以报文形式传递信息,将长报文划分为较小的数据块(分组),每个分组都通过路由器或交换机,路由器或交换机需要对信息做存储并转发。分组交换的核心是存储转发。
电路交换
电路交换方式主要用于电话通信网,它是一种面向连接的技术,一次通信过程分为连接建立、数据传输和连接释放3个阶段。在连接建立阶段,网络要完成两项工作:第一,确定本次通信从源端到目的地端,用户业务信息应走的路由;第二,在该路由途经的交换节点进行全程的资源预留,预留的资源包括交换节点中从入端口到出端口的内部通道和交换节点间中继线路上的带宽资源,以这种方式建立一条端到端的专用通信连接,这个连接通常占用固定的带宽或时隙,有固定的传输速率。在整个通信期间,不管实际有无数据传输,沿途的交换节点负责保持、监视该连接,直到用户明确地发出通信结束的信号,网络才释放被占用的资源,撤销该连接。电路交换在连接建立时,预先分配固定带宽资源的方式被称为静态复用方式。
频分复用
划分不同的频率传输不同的信道,宏观微观都是并行,接收方根据频率接收想要的内容
时分复用
将一个时间段分割,固定的编号分隔段给固定的发送方使用,每一路信号在自己的段内独占信道进行数据传输。宏观并行微观串行
对比
由于电路交换需要预留资源且接收方的数量有限(使用时分复用),分组交换往往更快更有效。趋势:分组交换
五层/七协议
一个传输实例
攻击
DOS攻击
DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。
包括以下三种类型:
应用层
应用程序结构
客户-服务器结构
一个主机,多个客户端。例如服务器。
P2P point2point结构
通信各个点对等,流量加密型多使用P2P。例如文件共享等。
应用层协议
总览
http
超文本传输协议(Hyper Text Transfer Protocol,HTTP),默认端口80,基于TCP
报文格式
http状态码
1xx: 信息响应
2xx: 响应成功
3xx: 重定向
4xx: 客户端问题
5xx: 服务端问题
499, Client Closed Request, 客户端主动断开连接。
是指一次http请求在客户端指定的时间内没有返回响应,此时,客户端会主动断开连接,此时表象为客户端无响应返回,而nginx的日志中会status code 为499。
200 404 499 502、504
cookie
http 无状态协议。为了识别用户,加入cookie,cookie是建立在无状态的http协议上的一个用户会话层。
4个cookies的位置
根据用户的cookie可以记录用户访问了服务器的哪个界面,例如购物车服务等,可用于用户身份识别、数据传输、登录控制(是否登录、单点登录)
session
由于cookie 是存在用户端,而且它本身存储的尺寸大小也有限,最关键是用户可以是可见的,并可以随意的修改,很不安全。那如何又要安全,又可以方便的全局读取信息呢?于是,session 诞生了
当客户端第一次请求服务器的时候,服务器生成一份session保存在服务端,将该数据(session)的id以cookie的形式传递给客户端;以后的每次请求,浏览器都会自动的携带cookie来访问服务器(session数据id)。
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
https
HTTPS协议 = HTTP协议 + SSL/TLS协议,
http与https区别:
- HTTP使用对称密钥,HTTPS兼顾安全与效率对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输
- HTTP 80端口 HTTPS 443端口
非对称加密算法:RSA算法 DSA算法 ECC算法 DH算法
RSA原理:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。
DSA算法加入数字签名。
FTP
FTP是FileTransferProtocol(文件传输协议),有状态
使用两个TCP传输文件,一个控制连接,一个是数据连接,
控制连接:用户标识,口令,改变远程目录,put,get等
数据连接:发送文件
SMTP
Simple Mail Transfer Protocol电子邮件传输协议,端口25,基于TCP
DNS查询
Domain Name System 域名系统,端口53 协议UDP
DHCP
动态主机配置协议 Dynamic Host Configuration Protocol 端口67,基于UDP
流程
1.DHCP服务器发现
源地址:本机,0.0.0.0 目的地址:广播地址,255.255.255.255。链路层会传播到子网的所有主机
2.DHCP服务器提供
服务器收到一个发现报文,回复提供报文。目的地址仍为广播地址。
3.DHCP请求
客户从一个或多个服务器提供报文中选择一个,并发送DHCP请求报文,回显配置参数
4.DHCP ack
运输层
多路复用
将运输层报文数据交付到正确的套结字工作成为多路分解;在源主机从不同套接字收集信息,并封装头部,发送报文,称为多路复用
TCP
由四元组标识,(源IP,源端口,目的IP,目的端口)
报文
TCP 的三次握手
假设 A 为客户端,B 为服务器端。
-
首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。
-
A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。
-
B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。
-
A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。
-
B 收到 A 的确认后,连接建立。
三次握手的原因
第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。
TCP 的四次挥手
以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。
-
A 发送连接释放报文,FIN=1。
-
B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据。
-
当 B 不再需要连接时,发送连接释放报文,FIN=1。
-
A 收到后发出确认,进入 TIME-WAIT 状态,等待 2 MSL(最大报文存活时间)后释放连接。
-
B 收到 A 的确认后释放连接。
四次挥手的原因
客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。
TIME_WAIT
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:
-
确保最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。
-
等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。
TCP 可靠传输
TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。
一个报文段从发送再到接收到确认所经过的时间称为往返时间 RTT,加权平均往返时间 RTTs 计算如下:
其中,0 ≤ a < 1,RTTs 随着 a 的增加更容易受到 RTT 的影响。
超时时间 RTO 应该略大于 RTTs,TCP 使用的超时时间计算如下:
其中 RTT d 为偏差的加权平均值。
TCP 滑动窗口
窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。
发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。
接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。
TCP 流量控制
流量控制是为了控制发送方发送速率,保证接收方来得及接收。
接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。
TCP 拥塞控制
如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。
TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。
发送方需要维护一个叫做拥塞窗口(cwnd)的状态变量,注意拥塞窗口与发送方窗口的区别:拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。
为了便于讨论,做如下假设:
- 接收方有足够大的接收缓存,因此不会发生流量控制;
- 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。
1. 慢开始与拥塞避免
发送的最初执行慢开始,令 cwnd = 1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段数量为:2、4、8 …
注意到慢开始每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能性也就更高。设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,进入拥塞避免,每个轮次只将 cwnd 加 1。
如果出现了超时,则令 ssthresh = cwnd / 2,然后重新执行慢开始。
2. 快重传与快恢复
在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认。例如已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。
在发送方,如果收到三个重复确认,那么可以知道下一个报文段丢失,此时执行快重传,立即重传下一个报文段。例如收到三个 M2,则 M3 丢失,立即重传 M3。
在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此时直接进入拥塞避免。
慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。
UDP
由二元组标识,(目的IP,目的端口)
报文
校验和
对所有十六比特字的和进行反码运算
UDP 和 TCP 的区别
-
用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。
-
传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。
网络层
总览
转发和路由选择
每个路由器都有一个转发表,路由器是一个三层(网络层)交换机,二层交换机试数据链路层的交换机。
IP协议
IPv4
报文格式
分片和重组
无类别域间路由CIDR
无类别域间路由(Classless Inter-Domain Routing、CIDR)
在域名系统出现之后的第一个十年里,基于分类网络进行地址分配和路由IP数据包的设计就已明显显得可扩充性不足 。CIDR是为了解决这个问题。
在之前的分类编址中,IP地址的分配把IP地址的32位按每8位为一段分开。这使得前缀必须为8,16或者24位。因此,可分配的最小的地址块有256(24位前缀,8位主机地址,28=256)个地址,而这对大多数企业来说太少了。大一点的地址块包含65536(16位前缀,16位主机,216=65536)个地址,而这对大公司来说都太多了。这导致不能充分使用IP地址和在路由上的不便,因为大量的需要单独路由的小型网络(C类网络)因在地域上分得很开而很难进行聚合路由,于是给路由设备增加了很多负担。
无类别域间路由是基于可变长子网掩码(VLSM)来进行任意长度的前缀的分配的。CIDR包括:指定任意长度的前缀的可变长子网掩码技术。遵从CIDR规则的地址有一个后缀说明前缀的位数,例如 192.168.0.0/16。 根据机构的实际需要和短期预期需要而不是分类网络中所限定的过大或过小的地址块来管理IP地址的分配的过程 。
NAT
NAT(Network Address Translation),是指网络地址转换。
当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
这种方法需要在专用网(私网IP)连接到因特网(公网IP)的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址(公网IP地址)。这样,所有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
另外,这种通过使用少量的全球IP地址(公网IP地址)代表较多的私有IP地址的方式,将有助于减缓可用的IP地址空间的枯竭。
IPv6
特点:
1.扩大的地址容量
2.简化高效的40字节首部
3.流标签与优先级
删除的特性:
1.不允许分配/分组重装。IPv6不允许中间路由器进行分片或重组,若报文太大就发送一个ICMP差错报文。
2.首部校验和
3.选项
控制报文协议
ICMP
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。
报文格式
ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文,IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。
路由选择协议
自治系统内部协议
RIP
属于应用层。基于UDP,使用端口520。
RIP(Routing Information Protocol)协议——路由信息协议,是一种分布式的基于距离向量的路由选择协议,最大的优点是简单。
RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(距离向量)。RIP协议对距离的定义如下:
(1) 从一路由器到直接连接的网络的距离定义为1。
(2) 从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1。
RIP协议的距离也称为跳数,RIP协议允许一条路径最多只能包含15个路由器。因此,距离等于16时即相当于不可达。
RIP协议是通过每个路由器要不断的和其他路由器交换路由信息,从而达到自治系统中所有节点都得到正确的路由信息。
RIP协议考虑了和哪些路由器交换信息、交换什么信息以及什么时候交换信息这三个问题,RIP协议特点:
(1) 仅和相邻路由器交换信息。
(2) 交换的信息是当前本路由器所知道的全部信息,即自己现在路由表。
(3) 按固定的时间间隔交换信息,如每隔30s或网络拓扑发生变化时。
缺点:
收敛慢;
易产生路由环路;
可扩展性差,最大只能支持15跳。
OSPF
Open Shortest Path First,使用IP协议,所以是网络层,使用dijkstra算法求最短路径。
OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。
初始化形成端口初始信息:在路由器初始化或网络结构发生变化(如链路发生变化,路由器新增或损坏)时,相关路由器会产生链路状态广播数据包LSA (链路状态公告Link State Advertisement),该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。
2、路由器间通过泛洪(Floodingl机制交换链路状态信息:各路由器一方面将其LSA数据包传送给所有与其相邻的OSPF路由器,另一方面接收其相邻的OSPF路由器传来的LSA数据包,根据其更新自己的数据库。
3、形成稳定的区域拓扑结构数据库:OSPF路由协议通过泛洪法逐渐收敛,形成该区域拓扑结构的数据库,这时所有的路由器均保留了该数据库的一个副本。
4、形成路由表:所有的路由器根据其区域拓扑结构数据库副本采用最短路径法计算形成各自的路由表。
自治系统间协议
BGP
Border Gateway Protocol,基于TCP,应用层,端口179
边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
路由器
路由器实现了网络层的转发,根据ip,所以是一个三层的交换机。可以路由器在工作时只实现了三层协议,上层的应用层传输层无。路由器的LAN口接线的话就是二层交换机的作用。
在两个主机进行通信时,可以认为:分组交换网中的交换结点或因特网中的路由器都没有运输层。
在路由器之间进行通信以获取相邻路由器的路由信息时,需要使用运输层的服务(RIP和BGP协议),因此有运输层。只是在转发主机通信的IP数据报时,不需要使用囤粮功能。因此,不能不分情况地得出结论:“路由器没有运输层”。
链路层
MAC地址
MAC地址(英语:Media Access Control Address)。直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address)或LAN地址,它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。
长度6字节,共有2^48个mac地址。
广播的实质是在链路层发送目的mac为FF-FF-FF-FF-FF-FF的地址。
报文格式
ARP协议
ARP(Address Resolution Protocol)
是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
每个交换机会缓存一个ARP表。
交换机
功能:转发和过滤,内部结果:交换机表,有自学习性,即插即用,自动检测。
与路由器比较
交换机优点:即插即用,高速率分组过滤和转发
缺点:拓扑限制,大型网络需要大的ARP表,对于广播风暴的限制
路由器优点:丰富的拓扑结构,防火墙保护
缺点:不能即插即用
web界面访问的过程
comcast是网络提供商。电脑通过交换机连接到路由器上进行外网访问。
DHCP获取ip
DNS查询,ARP查询