https://www.jianshu.com/p/8666237e5ddd
计算机网络体系分类
七层模型 | 五层模型 |
---|---|
应用层 | |
表示层 | |
会话层 | 应用层 |
传输层 | 传输层 |
网络层 | 网络层 |
数据链路层 | 数据链路层 |
物理层 | 物理层 |
物理层
物理层主要实现的是主机与网络之间的物理连接,讲数据以二进制流(高低电平)在物理介质中传输。
通信方式
单工、半双工、全双工
信道复用
时分复用、频分复用、码分复用(发送的数据采用不同的编码,信号是线性叠加的,这样大大提高了线路的使用效率;接收数据时,只接收自己能识别的,其他的丢掉。)
数据链路层
数据链路层将上层数据转化成帧,将帧从一个机器传到另一个机器,通过Mac地址,以广播的方式。
通信方式
- 点对点通信:通信方式是点到点的,也就是只能是两个点之间的通信。PPP(Point To Point)协议。
- 广播通信:广播通讯,也就是可以同时实现一对多的通信。CSMA/CD
PPP协议:
1.成帧问题 :将物理层的bit流转换为二层帧
2.链路维护:链路的建立,维护与拆除
3.可靠性问题:差错控制与流量控制
CSMA/CD:
先听后发,边发边听,冲突停发,随机延迟后重发
核心要解决的问题
1、封装成帧
2、透明传输
3、差错检测(CRC)–https://blog.youkuaiyun.com/hj605635529/article/details/72014203
为什么链路层、网络层、链路层都有校验?
1、首先链路层的校验是CRC,仅能保证大部分情况下,是正确的;网络层,对IP首部进行sumcheck也是同理;传输层的也同理。
2、因为分层了,所以对于帧、IP数据包、段均有可能在传输中出现问题。比如在帧合成IP数据包时出现问题,IP数据包到段出现问题。
交换机
交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表,即转发表。
作用:转发数据表、减少冲突域、隔离广播风暴
转发表建立过程
PC1(192.168.1.1/24)--------(接口1)交换机(接口2)--------PC2(192.168.1.2/24),如果PC1要PING PC2(第一次通信)
PC1先判断出PC2和自己处在同一个网段,由于两台PC是第一次通信,PC1的ARP表项中没有PC2的MAC地址,于是PC1就发一个ARP请求(请求的内容是PC2的MAC地址),这个ARP请求的源MAC地址是PC1的MAC地址,目的MAC地址是全F(广播包),交换机的接口1接收到ARP请求,把PC1的MAC地址加入接口1的MAC地址表,来表示PC1在我接口1下面;同时交换机向除了接口1之外的其他同一VLAN的端口转发这个ARP请求(含接口2),接着PC2接收到到这个ARP请求,发现这个请求就是发给我的,于是生成了一个ARP响应包,来响应这个请求,这个响应数据帧的源MAC地址为PC2的源MAC地址,交换机的接口2接收到这个响应数据帧之后把源MAC地址加入接口2的MAC地址表中。
网络层
将上层传过来的Segment分解成IP数据包,尽最大努力将IP数据包从一个子网传到另一个子网。
IP协议
- ARP(Address Resolution Protocol,地址解析协议):将网络的IP地址转化为实际的物理地址(MAC地址),并存储在MAC地址表中。
- RARP:允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。
- ICMP(网络控制报文协议):用于进行差错情况和异常情况的反馈,分为询问报文和差错报告报文。死亡之ping:当恶意大数据包从攻击者发送到目标时,数据包将分段成分段,每个数据段都低于最大大小限制。当目标机器尝试将这些部分重新放在一起时,总数超过了大小限制,并且可能会发生缓冲区溢出,导致目标机器冻结,崩溃或重启
1、传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,比如PING;2、无连接; - IGMP(网际组管理协议):用于控制和管理多播和组播的协议。
8组播(Multicast)传输:在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个接收者传输相同的数据,也只需复制一份相同的数据包。
网络地址(IP地址)主要分为五类:
网络地址=IP地址&子网掩码
广播地址:将主机地址全变成1
若需要分配15台电脑,需要几位的主机地址。
需要5位。
若选取4位,2^4=16=14+1(网络地址,代表一个网段)+1(广播地址)。实际可用主机地址只有14个
路由选择协议
Internet网被分成多个域或多个自治系统(AS)。一个域(domain)是一组主机和使用相同路由选择协议的路由器集合,并由单一机构管理。换言之,一个域可能是由一所大学或其它机构管理的互联网。内部网关协议(IGP)在一个域中选择路由。外部网关协议(EGP)为两个相邻的位于各自域边界上的路由器提供一种交换消息和信息的方法。
内部网关协议IGP,是在AS(自治系统)内部使用的协议,常用的有OSPF、ISIS、RIP、EIGRP。
外部网关协议EGP,是在AS(自治系统)外部使用的协议,常用的有BGP。
内部网关协议(IGP):
- RIP协议(Routing Information Protocol,路由信息协议):基于距离矢量的协议(距离-跳数和方向-去哪儿)RIP自身是基于UDP的应用层协议。
(1)仅和相邻路由交换信息(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表。也就是说,交换的信息是:“我到本自治系统中所有网络的(最短)距离,以及到那个网络应经过的下一跳路由器。”(3)按固定时间间隔交换路由信息,例如,每隔30秒。然后路由器根据收到的路由信息更新路由表。
算法分析:
A-B-C (三个路由相连)
A知道能到B,B知道能到A、C,C知道能到B。
A | 目的IP | 跳数 |
---|---|---|
B | 0 |
当一次传播之后,A知道B能到C,C也同理
A | 目的IP | 跳数 |
---|---|---|
B | 0 | |
C | 1 |
缺点:
- 由于15跳为最大值,RIP只能应用于小规模网络;
- 收敛速度慢;
- 根据跳数选择的路由,不一定是最优路由。
- OSPF(Open Shortest Path First,开放最短路径优先协议):基于链路状态的协议。Dijkstra算法计算出到达每一网络的最短路径,并在检测链路的变化情况(如链路失效)时执行该算法快速收敛到新的无环路拓扑。
外部网关协议(BGP):将一个大的网络分为多个小的自治域,每个自治域内有一个网关路由负责和其他的自治域的网关进行通讯。路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息
传输层
提供端到端,应用程序间的段的通讯。
UDP(用户数据报协议)
- UDP是无连接的
- UDP使用尽最大努力交付,但是不保证可靠交付
- UDP是面向报文的(无状态的)
- UDP没有拥塞控制
- UDP支持一对一,一对多,多对一,多对一的交互通讯
- UDP首部的开销小
TCP(传输控制协议)
- TCP是面向连接的
- 每一条TCP连接只能由两个端点,每一条TCP连接只能是点对点的TCP连接
- TCP提供可靠交付的服务
- TCP提供全双工通信
- 面向字节流(有状态)
1、可靠
- 确认ACK
- 超时重传
2、流量控制
- 滑动窗口(停等->后退N->选择重传)
3、拥塞控制
- 慢启动
- 拥塞避免
- 快速递减机制
- 快速重传
- 快恢复
流量控制引发的死锁?怎么避免死锁的发生?
当发送者收到了一个窗口为0的应答,发送者便停止发送,等待接收者的下一个应答。但是如果这个窗口不为0的应答在传输过程丢失,发送者一直等待下去,而接收者以为发送者已经收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁。
为了避免流量控制引发的死锁,TCP使用了持续计时器。每当发送者收到一个零窗口的应答后就启动该计时器。时间一到便主动发送报文询问接收者的窗口大小。若接收者仍然返回零窗口,则重置该计时器继续等待;若窗口不为0,则表示应答报文丢失了,此时重置发送窗口后开始发送,这样就避免了死锁的产生。
应用层
HTTP1.0、HTTP1.1、HTTPS、HTTP2.0