概述
RFC(Request for Comments):是互联网技术标准的文档,定义了各类协议和网络技术的规范。
连接
主机间连接
直接连接 : 由前面有先或无线建立连接
间接连接(局域网) : 当距离和设备增加时,则需要第三方来帮助,即交换机,物理地址与交换机的端口绑定,主机的网卡有唯一物理地址
间接连接(广域网) : 而如果需要更大距离,则需要在交换机上加一条线连接到公网,即路由器,路由器有唯一公网ip地址
程序间连接
在主机内,程序内的socket通过与端口绑定
通过操作系统的ARP协议将ip转换成mac,然传给交换机
性能指标
- 速率:数据传输速度,通常用比特率(bps)表示。
- 带宽:最大数据传输能力,通常用每秒传输的比特数表示。
- 吞吐量:实际数据传输量。
- 时延 :数据从源头到目的地所需的时间。
- 发送时延:数据从发送端进入网络的时间。
- 传播时延:信号在媒介中传播的时间。
- 带宽时延积:带宽与传播时延的乘积,衡量网络的延迟能力。
- RTT(往返时延):数据从发送端到接收端再返回的时间。
- 利用率:网络或链路的使用程度。
协议
三要素
- 语法:数据格式和编码方式。
- 语义:数据的含义和如何操作。
- 时序:数据交换的时序与控制。
服务 : 网络服务指的是协议层提供的功能,如数据传输、错误检测、流量控制等。
分类
分布范围
-
广域网(WAN)
- 也称远程网。
- 提供长距离通信,范围通常是几十千米到几千千米,如跨国通信。
- 连接各节点交换机的链路一般都是高速链路,具有较大的通信容量。
-
城域网(MAN)
- 覆盖范围跨越几个街区甚至整个城市,约5~50km。
- 大多采用以太网技术,有时常并入局域网的范围进行讨论。
-
局域网(LAN)
- 覆盖范围几十米到几千米。
- 一般用微机或工作站通过高速线路相连。
- 传统上,局域网使用广播技术,而广域网使用交换技术。
-
个人区域网(PAN)
- 覆盖范围大约十米左右。
- 在个人工作的地方将消费电子设备(如平板电脑、智能手机等)用无线技术连接起来的网络,常称为无线个人区域网(WPAN)。
传输技术
-
广播式网络
- 所有联网计算机都共享一个公共通信信道。
- 当一台计算机利用共享通信信道发送报文分组时,所有其他计算机都会收到该分组。接受到的计算机通过检查目的地决定是否接受该分组。
-
点对点网络
- 每条物理线路连接一对计算机。
拓扑结构
-
总线形
- 用单根传输线把计算机连接起来。
-
星形
- 每个终端或计算机都以单独的线路和中央设备相连。
-
环形
- 所有计算机接口设备连接成一个环。
-
网状形
- 每个节点至少有两条路径与其他节点相连,多用于广域网。
交换技术
-
电路交换网络
- 在源节点和目的节点之间建立起一条专用通路用于传输数据,包括建立连接(占用通信资源)、传输数据(一直占用通信资源)和断开连接(释放通信资源)三个阶段。最典型的电路交换网是传统电话网络。该类网络的特点是整个报文的比特流连续的从源点直达终点,好像在一条管道中传送。
-
报文交换网络
- 也称存储-转发网络。用户数据加上源地址、目的地址、校验码等辅助信息,然后封装成报文、这个报文传送到相邻节点,全部存储后,再转发给下一个节点,重复这一过程直到到达目的节点,每个报文可以单独选择到达目的节点的路径。
-
分组交换网络
- 也称包交换网络。其原理是将数据分成较短的固定长度的数据块,在每个数据块中加上目的地址、源地址等辅助信息组成分组(包),以储存-转发方式传输。
传输介质
-
有线网络 : 引导型传输介质
- 双绞线:常用于局域网,适用于较短距离传输。
- 同轴电缆:适用于电视和宽带传输,具有较高的抗干扰能力。
- 光纤:利用光信号传输,传输速度快,适用于长距离、大带宽。
-
无线网络 : 非引导型传输介质
- 无线电:广泛用于无线通信,信号通过空气传播。
- 微波:用于点对点的长距离传输,需要视距。
- 卫星:利用卫星进行信号转发,适用于跨越大范围的通信。
模型
OSI参考模型
Open System Interconnect 开放式系统
层次意义
如何传输数据01比特流
物理层:数模转换(发送端)和模数转换(接收端),数据的原始传输
传输过程可能出现错码和误码?
数据链路层:将原始比特流转换成逻辑传输符号,提供纠错编码,格式变为帧
由于物理设备的不可靠性,就出现了按帧进行传输(数据链路层),即把数据进行分组加上校验
出现多个网络节点,应该选择哪个节点?
网络层:通过路由选择,选择最佳路径,数据格式是IP数据包
不同网络的主机需要定位,即在网络中寻址,路由.这一步传输的是IP数据报,而也就是到了这一层,才实现了让任意两台主机传输数据;操作系统通过ARP将IP地址转化成MAC地址
某次连接传输的数据可能很大,会出现错传、漏传
传输层:将数据拆分成段,提供维护连接的机制(流量控制、拥塞控制)
网络层的直接传输并不可靠,所以出现了以IP协议为基础封装的TCP/UDP协议,提供更可靠和更方便的传输
对用户来说每次都要使用传输层拆分,再使用网络层寻路很麻烦
会话层:提供建立连接和维护连接的机制,方便用户使用
数据最终会传入进程,然后建立进程间会话
不同操作系统之间因为使用的编码和数据结构不同,网络传输如何互通?linux/windows
表示层:提供编码转换、加解密、解压缩
将二进制解密,翻译成应用的格式,如文本,图片等
接收方不知道发送发发送的是什么东西、数据有多长?
应用层:规定发送方和接收方必须使用固定长度的消息头,并且消息头固定格式,并标明长度等信息。
应用数据 HTTP,FTP,SMTP,DNS,TELNET
TCP/IP模型
虽然OSI更全面,但是TCP/IP模型因为简单易懂应用更为广泛
前者由学者提出,面相研究,后者由计算机寡头提出,面相实用
OSI产生于军方背景,而TCP/IP是UNIX的一部分,后者更加自由
网关
gateway,即网络中的关卡
用于在不同网络中通信的设备,所以交换机不算网关,路由器算网关.
网关实现多种功能,如路由、安全、负载均衡、缓存、压缩、加密、认证、授权、过滤、转码等
在不同层有不同的网关设备,如交换机,路由器等
物理层
产生原因
二进制数据需要传输,可以通过调制转换为物理信号(码元)传输,再通过解调转化为模拟信号还原成二进制数据
码元 : 数据在物理媒介上表示的最小单位,是传输的基本单元,可以是电压电平、光脉冲或相位状态等
物理原理
有线
最开始是直接电线传输,通过电流电压表示数据;然后变成了光纤传输,通过光脉冲表示数据
物理信号通过调制和解调,与数字信号转换,从而实现数据传输.执行这一过程的叫做调制解调器,即光猫
科普:
脉冲的频率即传输速度的上限,因为光子更小,所形成的波频也更大,于是光纤取代了电线
另外一种就是频率就是cpu的时钟频率,cpu是按时钟信号来执行指令的,所以频率越高,cpu就越好.这种频率由晶振产生
石英晶体排列,让其在施加外力后(此处为电场力),能够由于弹性产生特定频率的震动,一般频率很高,我们将其分频后作为时钟信号
无线
原理 : 将数据调制成射频信号,电磁波低于100KHZ时会被地表吸收,高于100kHZ的电磁波称为射频,而不同频率传输不同的信息,这样信息才不会混乱
规范: 所以不同射频需要进行规范,即进行分配,各国都留出ISM频段(Industrial Scientific Medical Band)免费给这几种行业使用,只要发出功率不超过1W从而不干扰其他频段的就可以了
应用 : 2.4GHz为各国共同的ISM频段。因WLAN、bluetooth等无线网络,均可工作在该频段上.而这些信号可以根据环境自动调节频率以防止冲突.另外,电视红外遥控器频率为38kHZ,汽车遥控器一般为433.92MHZ和315HZ
信号屏蔽器就是发送与移动通信相同频段的射频干扰通信
wifi(wireless Fidelity无线保真)是特殊的WLAN
特性
- 机械特性:规定设备连接的物理尺寸、形状等,确保不同设备的兼容性。
- 电气特性:规定信号的电压、电流等参数,确保传输信号的正确解读。
- 功能特性:定义物理设备应提供的功能,如信号的发送、接收等。
- 过程特性:描述信号的传输过程,如信号的时序、频率等。
调制
编码
- 不归零编码:数据’1’和’0’分别由不同的电平表示,但不依赖于时间基准。
- 归零编码:信号中‘1’和‘0’之间会有归零的电平,表示不同的状态。
- 曼彻斯特编码:每个比特周期中,信号中间有一次电平的跳变,既表示0也表示1。
- 差分曼彻斯特编码:信号中每个比特周期的中点进行电平跳变,增加了相位反转作为判别标准。
调制
- 调幅(AM):信号幅度根据原始信号的强度变化。
- 调频(FM):信号频率随原始信号变化。
- 调相(PM):信号的相位根据原始信号的变化。
信道
可靠性
- 奈奎斯特定理(奈氏准则):在无噪声的情况下,要使信号能够完全恢复,采样频率至少为信号带宽的两倍。
- 香农公式:用于计算信道的最大数据传输率,公式为 C = B l o g 2 ( 1 + S N ) C = B log 2 ( 1 + S N ) C=Blog2(1+SN)C = B \log_2 (1 + \frac{S}{N}) C=Blog2(1+SN)C=Blog2(1+NS),其中B是带宽,S/N是信噪比。
复用
- 频分复用(FDM):将可用带宽分割成多个频段,每个频段分配给不同的信号。
- 时分复用(TDM):通过时间片轮流传输多个信号,适用于数字信号。
- 统计时分复用(STDM):在时分复用的基础上,根据需求动态分配时间片。
- 波分复用(WDM):在光纤通信中,利用不同的光波长进行数据传输。
- 码分复用(CDM):不同信号使用不同的码字进行区分。
高速传输
SONET(Synchronous Optical Network):同步光纤网络标准,定义了高速光纤通信的传输格式和接口。
SDH(Synchronous Digital Hierarchy):国际标准,支持大容量数据传输,广泛应用于光纤网络。
宽带接入
- ADSL(Asymmetric Digital Subscriber Line):非对称数字用户线技术,常用于宽带接入,提供较高的下载速率。
- HFC网(光纤同轴混合网):结合光纤和同轴电缆的宽带接入技术,广泛用于电视和互联网接入。
- FTTx(Fiber to the x):指将光纤铺设到不同的用户接入点,如FTTH(光纤到户)、FTTP(光纤到建筑物)等。
集线器
集线器(Hub):物理层设备,用于将多个计算机连接在一起,转发接收到的信号到所有端口,但不会进行数据过滤或智能管理。
数据链路层
产生原因
由于物理设备的不可靠性,就出现了按帧进行传输,再把数据进行分组加上校验
校验
- 循环冗余校验 (CRC):通过将原数据与生成多项式进行不断地类似除法的异或操作,生成一个校验码附加到数据后,接收方用相同算法验证数据完整性。
- 奇偶校验:发送方添加一个额外的比特使得数据中“1”的数量为奇数或偶数,接收方检查这个条件是否满足以检测错误。
- 纵向冗余校验 (LRC):对每一列数据位进行异或操作生成一个校验字符,与数据一起发送,接收方再次计算验证。
- 校验和:将数据分割成若干部分,各部分相加得到一个和值作为校验码,接收方重新计算和值来验证数据是否正确。
MAC
地址
MAC(Media Access Control Address),是物理世界地址,由设备中的网卡(NIC)在出厂时唯一标识
格式 : 如BC-6E-E2-22-26-87
,由``6*32bit`组成,每个32bit由2十六进制表示,前三个表示厂商序列号(IEEE分配),后三个表示产品序号
mac可通过特定手段修改
帧
frame,数据链路层传输的基本单位,包含头部(如目标MAC地址、源MAC地址、类型字段)和数据部分(数据和校验码)
PPP
点对点协议PPP(Point-to-Point Protocol):用于直接连接两个节点,支持多种网络层协议,提供身份验证、加密和压缩等功能。
零比特插入(Bit Stuffing): 在点对点协议(PPP, Point-to-Point Protocol)中,帧的开始和结束是由一个特殊的标志序列 01111110
标记的。如果数据中也出现了 01111110
这样的序列,发送方会在连续的五个 ‘1’ 之后插入一个 ‘0’,从而避免了数据中的序列与标志序列相同。接收方在接收到数据后会移除这些额外插入的 ‘0’ 比特,恢复原始数据。
速率
- FE(Fast Ethernet):100 Mbps的以太网标准,广泛应用于局域网。
- GE(Gigabit Ethernet):1 Gbps的以太网标准,提供更高的数据传输速率。
- 10GE(10 Gigabit Ethernet):10 Gbps的以太网标准,常用于数据中心和高带宽需求场景。
交换机和AP
作用
交换机(Switch)和无线接入点(Access Point) : 数据链路层设备,用于连接不同的局域网段
通过MAC地址表转发数据,能够根据目标地址智能选择路径进行数据传输。
- 自学习:交换机会自动学习网络中设备的MAC地址并将其与端口关联,从而高效地转发数据。
- STP(生成树协议):用于防止交换机网络中的环路,确保网络稳定。
CSMA/CD
载波监听多路访问/冲突检测,CSMA/CD(Carrier Sense Multiple Access with Collision Detection)用于局域网中控制多个设备共享同一信道。
- 争用期:设备检测信道是否空闲,如果空闲则发送数据;如果发生冲突,则进行退避。
- 最小帧长:为了确保能够及时检测到冲突,帧的最小长度要足够长。
- 退避算法:发生冲突后,设备随机等待一定时间再重新尝试发送。
802.1Q VLAN
802.1Q VLAN(虚拟局域网):为网络中的设备分配逻辑上的分组,使它们在同一物理网络上实现隔离,减少广播风暴,提高网络管理效率。
网络层
产生原因
不同网络的主机需要定位,即在网络中寻址,路由.这一步传输的是IP数据报,而也就是到了这一层,才实现了让任意两台主机传输数据
操作系统通过ARP将IP地址转化成MAC地址
由ip协议为基础的tcp/udp协议进行传输数据
基础概念
虚电路与数据报
- 虚电路:通过建立和维护一个逻辑连接来传输数据,数据按照顺序发送,确保可靠性,常见于TCP协议。
- 数据报:每个数据包独立传输,路由器根据目标地址选择路径,不保证传输顺序,常见于UDP协议。
控制面与数据面
- 控制面:负责网络层协议的管理与控制,如路由决策和路由协议的维护。
- 数据面:负责实际数据的转发和传输,如路由的转发和数据包的转发。
IP
IP地址
分类
IP(Internet Protocol)地址是在网络中的地址,分为前后两部分,前面部分为网络号,后半部分为主机号
两个部分通过子网掩码进行区分,子网掩码由连续的1和连续的0构成,如255.255.255.0
,1的部分对应为网络号,后面为主机号,因为子网掩码全为1,也经常用1的个数来表示子网掩码,如192.168.0.1/24
表示子网掩码为255.255.255.0
- A类:政府机构或大型企业
- B类:中型企业和大学
- C类:小公司或家庭网络 192.
- D类:多播传输
- E类:实验和研究
无类
CIDR(Classless Inter-Domain Routing):无类域间路由,使用斜杠表示法(如192.168.1.0/24)
因为分类IP这种分配已经不合理了,所以使用子网掩码来代替传统的IP类地址。
特殊
- 网络地址 : 用来表示子网,主机号全为0
- 广播地址 : 用来向子网广播,主机号全为1
- 受限广播地址 : 255.255.255.255, 不能经过路由器
- 回环地址 : 127.0.0.1/8,用来表示本机地址,常用于测试
IP数据报
IP数据包的格式包括版本、头部长度、服务类型、总长度、标识符、TTL、协议类型、源地址、目标地址等字段。
分配
私有IP : 我们的IP都是局域网内的IP,很多时候都是192.168.x.x
,足以容纳254个终端,一般够用了,而前面由 IANA这个机构指定为私有地址
动态分配 : 路由器接收操作系统的DHCP请求后分配,主机再将ip配置到网卡
手动分配 : 手动配置ip地址,即静态地址.需要自己填写IP地址,路由器公网地址(默认网关),子网掩码,DNS.
ARP
操作系统维护ARP(Address Resolution Protocol)表,即mac-ip的映射.
查表将对方ip转换成mac,如果没有查到,先给所有设备发送arp包,对应ip的主机会回复自己的mac地址,其他的会丢弃该包,所以可以通过查看操作系统的ARP表来查看本地设备
ICMP
ICMP (Internet Control Message Protocol) ,Internet 控制消息协议,是 IP 协议的一个辅助协议,主要用于在 IP 网络中传递控制信息和错误报告。
ping命令采用的ICMP协议,进行连通性测试,延迟测量
路由
因为网络范围的扩大,所以需要寻址
局域网和广域网:即 LAN(local area network)和WAN(wide area network) ,其实局域和广域都是相对而言的,我能掌握的就是局域网
协议
- RIP(Routing Information Protocol):距离向量路由协议,基于跳数(最大15跳)计算路由路径,简单但不适合大型网络。
- OSPF(Open Shortest Path First):链路状态路由协议,使用Dijkstra算法计算最短路径,适用于大型网络。
- BGP(Border Gateway Protocol):路径向量路由协议,主要用于自治系统之间的路由选择,是互联网的核心路由协议。
多播
- IP多播:一种用于单个发送端向多个接收端发送数据的技术,节省带宽。
- IGMP(Internet Group Management Protocol):用于IPv4的多播管理,允许主机加入或离开多播组。
- 多播路由选择协议:包括PIM(Protocol Independent Multicast)等,用于在网络中实现多播数据的转发。
路由器
作用
作用于网络层,进行数据包的转发
WAN口接运营商以连接到互联网 LAN口接自己设备
数据包需要跨越子网的时候就要经过路由器
当发现数据包不在自己子网时,就将目标IP改成路由器的,然后经由DNS,到达目标
地址转换技术
即NAT : Network Address Translation
如过两台设备在自己内网ip地址都是192.168.1.10,正常传输应该就会冲突
解决方法,将发送端的IP改成网关的IP,因为网关连接公网,IP是唯一的,能够正常寻址,解决了IPV4地址不足的问题
桥接和NAT
虚拟机常用上面两种方式来连接到网络
桥接就是把虚拟机当做物理机一样,直接连接到主机的路由器
NAT就是通过连接到物理机虚拟的一个子网中(vmnet8),可以让外部设备无法ping自己
同时,在ping时注意关闭防火墙
其中vmnet1是只允许主机与虚拟机通信的子网
其他技术
VPN
VPN(Virtual Private Network):通过公用网络建立一个加密的私人网络,保障数据安全。
通过隧道网络实现,即在一个网络协议中封装另一个网络协议的方式,将数据从一个网络传输到另一个网络的技术]
解决的问题 : 我们的数据会经过其他服务器,可以被其进行过滤和修改,即防火墙
但如果有服务器能同时连接两边的网络,那么我们就可以通过这个服务器来访问墙外的网络,即代理
而数据在传输时经过对称加密
MPLS
MPLS(Multiprotocol Label Switching):一种数据转发技术,通过标签而不是IP地址进行数据包转发,提升网络效率和带宽管理,适用于大规模企业网络。
SDN
SDN(Software-Defined Networking),它通过将网络的控制面与数据面分离,使得网络管理更加灵活、可编程和自动化。
控制面被提取出来,集中到一个或多个控制器中,而数据面则由转发设备(如OpenFlow交换机)负责快速的数据包转发。
传输层
产生原因
网络层的直接传输并不可靠,所以出现了以IP协议为基础封装的TCP/UDP协议,提供更可靠和更方便的传输
端口
用于标识网络中不同进程之间的通信,帮助传输层协议(如TCP、UDP)在同一主机中区分不同的应用程序
端口分类
周知端口:众所周知的端口号,范围:0-1023,如80端口是wWW服务
动态端口:一般不固定分配某种服务,范围:49152-65535
注册端口:范围:1024-49151,用于分配给用户进程或程序
常用端口
网络常用端口与协议
HTTP: 80 www服务。
DHCP:服务器端的端口号是67
DHCP:客户机端的端口号是68
POP3:POP3仅仅是接收协议,POP3客户端使用SMTP向服务器发送邮件。POP3所用的端口号是110。
SMTP: 端口号是25。SMTP真正关心的不是邮件如何被传送,而只关心邮件是否能顺利到达目的地。SMTP具有健壮的邮件处理特性,这种特性允许邮件依据一定标 准自动路由,SMTP具有当邮件地址不存在时立即通知用户的能力,并且具有在一定时间内将不可传输的邮件返回发送方的特点。
Telnet:端口号是23。Telnet是一种最老的Internet应用,起源于ARPNET。它的名字是“电信网络协议(Telecommunication Network Protocol)”的缩写。
FTP:FTP使用的端口有20和21。20端口用于数据传输,21端口用于控制信令的传输,控制信息和数据能够同时传输,这是FTP的特殊这处。FTP采用的是TCP连接。
TFTP:端口号69,使用的是UDP的连接。
DNS:53,名称服务
NetBIOS: 137,138,139,其中137、138是UDP端口,当通过网上邻居传输文件时用这个端口。而139端口:通过这个端口进入的连接试图获得 NetBIOS/SMB服务。这个协议被用于windows文件和打印机共享和SAMBA。还有WINS Regisrtation也用它。
NNTP 网络新闻传输协议:119
SNMP(Simple Network Management Protocol)(简单网络管理协议):161端口
RPC(Remote Procedure Call)(远程过程调用)服务:135端口
QQ:使用8000(服务端)和4000端口(客户端)
UDP
UDP(User Datagram Protocol),直接传输,保证数据的时效性
封装成数据包后直接传输,适用于实时应用(如VoIP、视频流)
另外常用于隧道网络
伪首部:UDP数据报中增加的伪首部包含源IP、目标IP、协议号等字段,用于计算校验和,确保传输完整性。
TCP
TCP(Transmission Control Protocol),传输控制协议,基于连接(即每次数据报的路由路径相同),提供可靠的数据传输、流量控制、拥塞控制等功能,适用于需要高可靠性的应用(如HTTP、FTP)
建立连接的过程
建立和关闭其实都可以发两次包完成(请求和响应),即分别告诉对方要建立连接或断开连接
由于网络的不可靠性,请求和响应都可能无法到达
- 为了保证建立的可靠性,于是有第三次握手
- 为了保证数据传输的完整性,于是有了后两次挥手
握手表示双方都需要立刻响应,挥手表示自己到了可以关闭状态
三次握手
首先客户端发SYN请求连接
服务器会SYN+ACK收到请求并确认
然后客户端发ACK建立连接
第三次发ACK是因为如果网络阻塞或SYN丢失,客户端会再次发送SYN包,如果阻塞的SYN恢复,如果两次包直接建立连接,服务器就会建立多个连接,而客户端只需要一个,产生两边状态不匹配.
四次挥手
客户端在请求了完数据之后就想要关闭连接,但服务器并不一定发完了
客户端发FIN,然后服务器回ACK表示知道要关了
在数据传输完成后,服务器发FIN表示已经收到,可以关了
客户端收到后回ACK,然后服务器收到后关闭,客户端再超时等待确认服务器已经关闭后再关闭
滑动窗口
原理
我们将接收方收到但是并未确认的数据报称为窗口,因为会因为确认,窗口不断后移,所以这个机制叫滑动窗口.
发送方和接收方同时维护一个窗口,允许发送多个数据包,但接收方仅按顺序确认数据。
接收方在接受消息后会回复这次接受的窗口大小和ACK(最后一个数据包编号+1)
当发送方收到错误的确认消息或者超时未收到回复,就会重新发送消息
流量控制
当接受方的缓冲区满的时候,就会回复一个窗口大小为0的ACK报文,告诉发送方暂停发送数据
而发送方会定期发送探针(probe)来检查接收方窗口是否打开,从而恢复传输
拥塞控制
- 慢开始(Slow Start):连接初始时,拥塞窗口从1个最大报文段(MSS)开始,逐渐增加,直到出现丢包或达到阈值。
- 拥塞避免(Congestion Avoidance):当拥塞窗口达到慢开始阈值后,增加速度变慢(通常是线性增长),以避免网络拥塞。
- 快重传(Fast Retransmit):当接收方连续收到重复的ACK时,发送方会立即重传丢失的数据包,无需等待超时。
- 快恢复(Fast Recovery):在快重传后,拥塞窗口不会重新设置为1,而是进行适度调整,以便快速恢复数据传输。
- RED(Random Early Detection):一种网络拥塞控制机制,当路由器的队列即将满时,随机丢弃一些数据包,以防止更严重的拥塞。
沾包
tcp不关心消息边界,如果直接传输数据,可能多个数据包被合并在一起,也可能一个数据包被解析成多个,导致预料之外的结果
所以我们采用tcp进行协议的封装,采用消息头+消息体的设计,将每个数据包进行分隔
应用层
产生原因
针对具体的场景,需要对传输层协议进行进一步封装
比如半双通的的HTTP1.1用于B/S架构,全双通的websocket实现服务器主动发消息给客户端
DHCP
DHCP(Dynamic Host Configuration Protocol):动态主机配置协议,自动为网络中的设备分配IP地址、子网掩码、网关等配置信息,简化网络设备配置,避免IP地址冲突。
域名
DNS(Domain Name System):用于将域名解析为IP地址,使用户能够通过易于记忆的域名访问互联网资源。DNS是一个分布式数据库,包含层次结构的域名和对应的IP地址。
FTP和TFTP
- FTP(File Transfer Protocol):标准的文件传输协议,支持文件上传和下载,提供控制连接(21端口)和数据连接(20端口)。可以在客户端和服务器之间传输大文件。
- TFTP(Trivial File Transfer Protocol):简化版的FTP,使用UDP协议,适用于小文件的传输,如网络引导过程中的文件传输。
简单ftp服务器
服务器端我们可以简单的使用python来搭建
如下,需要先pip install pyftpdlib
import socket
import pyperclip
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
import threadingdef get_local_ip():s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.connect(("8.8.8.8", 80))ip_address = s.getsockname()[0]s.close()return ip_addressdef start_ftp_server(ip):authorizer = DummyAuthorizer()authorizer.add_user("root", "root", "D:/tmp", perm="elradfmw")handler = FTPHandlerhandler.authorizer = authorizerhandler.encoding = 'utf-8'server = FTPServer((ip, 21), handler)server_thread = threading.Thread(target=server.serve_forever(), daemon=True)server_thread.start()return serverdef copy_ftp_link(ip):link = f"ftp://root:root@{ip}/"pyperclip.copy(link)print(f"链接已复制到剪贴板: {link}")if __name__ == "__main__":ip = get_local_ip()print(f"启动FTP服务器,IP地址为: {ip}")copy_ftp_link(ip)start_ftp_server(ip)
客户端的话就很简单了,
电脑端的windows资源管理器就可以,直接输入ftp://192.168.1.x:21
手机端的话es文件管理器也可以这样
远程登陆
- TELNET:用于远程访问和控制网络设备(如路由器、交换机)的协议。通过命令行界面提供远程会话,但由于没有加密,存在安全隐患,已被SSH替代。
- SSH (Secure Shell): 一种加密的远程登录协议,广泛用于现代网络环境中。它不仅提供安全的远程登录,还可以用于文件传输(SFTP)、隧道化(端口转发)等多种功能。SSH默认使用端口22进行通信。
- VNC (Virtual Network Computing) : 是一种跨平台的远程桌面协议,允许用户通过图形界面远程访问和控制另一台计算机。VNC的工作原理类似于RDP,但它更加灵活,支持多种操作系统。
万维网
WWW(World Wide Web):通过互联网访问的一个信息系统,用户可以通过浏览器访问网页。
URL
- 标识资源,还提供了如何定位和访问该资源的信息。URL 包含了完整的访问路径,包括协议、主机名、端口、路径和查询参数。
- 例如,
https://www.example.com/images/photo.jpg?size=large
是一个典型的 URL,它指定了如何通过 HTTPS 协议访问example.com
服务器上的photo.jpg
文件,并传递了一个size
参数。
HTTP
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本(Hypertext)数据的协议,通常用于在Web浏览器和Web服务器之间传递信息。
邮件协议
- SMTP(Simple Mail Transfer Protocol):电子邮件发送协议,负责将邮件从客户端传输到邮件服务器或从一个邮件服务器传输到另一个邮件服务器。
- POP3(Post Office Protocol 3):电子邮件接收协议,允许客户端从邮件服务器下载邮件,但邮件通常会从服务器删除。
- IMAP(Internet Message Access Protocol):与POP3类似的电子邮件接收协议,支持在服务器上管理邮件(如标记已读、分类等),适用于多设备访问邮件。
- MIME(Multipurpose Internet Mail Extensions):扩展邮件格式,允许通过SMTP发送非文本内容(如图片、视频、音频等)。
通信协议
主要区别就是,websocket协议可以让服务器主动发消息给客户端,二者都是建立在tcp协议之上
http
HTTP1.1也是基于tcp协议的,因为同时只能有一个端发数据,所以称为半双工
HTTP 是一种经典的请求-响应协议,适用于大多数 Web 应用程序,尤其是那些需要加载静态内容或进行 API 调用的场景。它的无状态特性使得它非常适合处理短时间的、偶发的通信。
websocket
与socket没啥关系
WebSocket 则是一种全双工协议,适用于需要实时通信的应用,如聊天应用、在线游戏、实时数据推送等。它的持久连接和低延迟特性使得它在需要频繁更新或低延迟交互的场景中表现出色。
协议升级
对于多种场景的通信,需要选择不同的协议,所以在tcp建立连接之后,都会先使用http协议进行通信,如果是websocket,则请求带上特殊的header,如下
Connection: Upgrade 浏览器想升级协议
Upgrade: Websocket 客户端想升级成Websocket协议
Sec-Websocket-Key: base64码
在升级之后,就改用websocket协议了
服务器推
前端不断发http请求到后端,看着就像式服务器在主动发消息一样
伪服务器推 : 扫码登陆就是这个原理,间隔1~2s一直轮询后端,是否被授权,会有明显的卡顿以及占用带宽,比如微信
长轮询 : 另外一种解决方案就是长轮询,设置一个较长的超时时间,如30s,在这个时间范围内,服务器端只要接受到消息,就立马给出响应(百度网盘就是这么干的),在RocketMQ中也使用了长轮询
在用户无感知的情况下,服务器"主动"推送数据给客户端的技术就叫做服务器推(comet)
但是对于游戏常见,需要一直推送数据,就需要使用websocket了
RPC
(远程过程调用,Remote Procedure Call) 是一种允许程序通过网络请求另一台计算机上的服务或功能的协议。它使得开发者可以像调用本地函数一样调用远程服务器上的函数或方法
服务发现 : 通过标识找到ip和端口的过程就叫做服务器发现
不难发现,其实RPC一般用于高性能的场景和公司内部的微服务,与http相比,还有以下区别
- 服务发现 : 会采用中间服务,如kafka的zookeeper来记录消息队列服务器集群的信息,而不是使用DNS
- 序列化 : 会采用protobuf而不是json
- 连接建立 : 在请求量大的时候,建立多条连接放在连接池中,而不是仅仅使用单条连接(但在有的编程语言的网络库,如go,也会给HTTP创建连接池)
这里的http主要指HTTP1.1,但HTTP2其实性能也很好,但是由于出现比较晚(2015),所以很多公司内部还是只能使用RPC,gRPC就是以此为基础封装的
其他应用
内网穿透
因为我们设备的IP都是内网IP,二者不能直接进行连接
而内网穿透就是通过将内网IP映射为内网穿透部门所提供的公网IP
从而能够跨局域网连接
网络安全
安全问题
安全问题:指在网络通信和数据传输过程中,可能面临的威胁与漏洞,主要包括:
- 数据泄露:敏感数据在传输或存储过程中被未经授权的人获取。
- 数据篡改:数据在传输过程中被恶意修改。
- 身份伪造:攻击者冒充合法用户或服务,进行欺诈或篡改操作。
- 拒绝服务(DoS):攻击者通过耗尽资源(如带宽、计算能力等)使目标系统无法正常工作。
- 中间人攻击(MITM):攻击者在通信双方之间截取或篡改数据。
密码体制
密码体制:是保护信息安全的一种技术,通过加密算法来防止数据泄露和篡改,主要分为:
- 对称密钥加密:加密和解密使用相同的密钥,速度较快,但密钥分配和管理困难。常见的算法有AES、DES。
- 非对称密钥加密:使用一对密钥,公钥用于加密,私钥用于解密。典型的非对称加密算法有RSA、ECC等。
- 哈希算法:将输入数据转换为固定长度的输出,不可逆,用于数据完整性验证。常见的哈希算法有MD5、SHA-256。
鉴别
鉴别:是确认身份的过程,确保通信双方都是合法的。常见的鉴别方法包括:
- 密码鉴别:用户输入密码,系统比对正确性。
- 生物特征鉴别:使用指纹、面部识别、虹膜扫描等方式验证身份。
- 双因素认证(2FA):结合密码和硬件令牌、短信验证码等双重验证手段,增强安全性。
密钥分配
密钥分配:在对称加密中,密钥需要安全地分配给通信双方。常见的方法有:
- 密钥交换协议:如Diffie-Hellman协议,允许双方在不直接传输密钥的情况下,安全地共享密钥。
- 公钥基础设施(PKI):通过证书授权中心(CA)颁发数字证书来进行公钥管理,确保通信安全。
SSL/TLS
SSL/TLS(Secure Sockets Layer/Transport Layer Security) 是一种用于在网络上提供安全通信的加密协议。它们通过加密数据传输、验证通信双方的身份以及确保数据完整性,保护客户端和服务器之间的通信不被窃听或篡改。
- SSL:早期版本的安全协议,现已不再推荐使用。
- TLS:SSL的继任者,提供了更强大的安全性和性能优化,是目前广泛使用的标准。
主要功能:
- 加密通信:确保数据在传输过程中不会被第三方窃取或篡改。
- 身份验证:通过数字证书验证服务器(有时也包括客户端)的身份,防止中间人攻击。
- 数据完整性:确保数据在传输过程中没有被修改。
应用场景:
- HTTPS:用于安全的网页浏览,保护用户与网站之间的通信。
- SMTPS/IMAPS/POP3S:用于安全的电子邮件传输。
- FTPS:用于安全的文件传输。
系统安全
- 系统安全:保护计算机系统免受各种攻击和滥用,包括:
- 操作系统安全:通过补丁管理、用户权限管理、系统日志等方式,确保操作系统不被入侵。
- 应用程序安全:确保应用程序代码无漏洞(如SQL注入、跨站脚本攻击等),并对输入进行充分的验证。
- 数据加密与备份:保护存储的数据,确保在数据泄漏或丢失时可以恢复。
防火墙和入侵检测
- 防火墙:一种网络安全设备或软件,用于监控和控制进出网络的流量。根据预设规则,防火墙可以允许或阻止数据包,防止未授权访问。
- 包过滤防火墙:根据数据包头部信息(如IP地址、端口号)进行过滤。
- 状态检测防火墙:通过跟踪会话状态,动态判断是否允许数据包通过。
- 应用层防火墙:检测和过滤针对应用层的攻击,如HTTP、FTP等。
- 入侵检测系统(IDS):用于监控网络或主机,检测是否存在潜在的恶意活动或安全威胁。分为:
- 网络入侵检测系统(NIDS):分析网络流量,检测异常行为。
- 主机入侵检测系统(HIDS):监控主机内部的活动,如文件系统的变化、进程的异常等。
互联网的音视频
RTSP
- RTSP(Real-Time Streaming Protocol):用于控制音视频流的传输协议,支持客户端请求音视频流并进行播放控制(如暂停、播放、快进等)。RTSP并不负责传输数据,它依赖于其他协议(如RTP)进行实际的数据传输。
- RTSP特点:
- 支持实时音视频流的控制。
- 允许客户端按需请求音视频内容的播放。
- 依赖TCP或UDP进行传输。
- 使用命令如PLAY、PAUSE、TEARDOWN等控制流媒体播放。
- RTSP特点:
交互式IP电话技术
RTP
RTP(Real-Time Transport Protocol):实时传输协议,用于在IP网络中传输音频、视频等实时数据流。RTP提供了时间戳、序列号等机制,用于保证数据包的顺序和同步,确保音视频内容按时播放。
特点
- 主要用于实时数据传输,如VoIP、视频会议等。
- 无法保证数据的可靠传输,通常与UDP一起使用。
- 包含序列号和时间戳,支持流的顺序和同步。
RTCP
RTCP(Real-Time Transport Control Protocol): 实时传输控制协议,与RTP配合使用,提供关于RTP流的控制和反馈信息,如传输质量、延迟、丢包率等。RTCP主要用于监控流媒体的传输质量,并协助对流媒体进行调整和优化。
特点
- 提供网络性能反馈,帮助调整RTP流的传输。
- 定期发送报告数据,向接收方提供流的质量信息。
- 允许接收方报告其收到的质量信息。
H.323
H.323:是一种用于音视频通信的标准协议,广泛应用于视频会议和VoIP(IP电话)。H.323定义了端到端的通信、信号传递和数据流的格式。
特点
- 包括呼叫控制、媒体流传输等功能。
- 支持视频、音频、数据的交互式传输。
- 基于多个协议组件,通常较为复杂。
SIP
SIP(Session Initiation Protocol),会话发起协议:是一种用于建立、修改和终止多媒体会话的应用层协议,广泛应用于IP电话、视频会议和即时消息等通信服务。
SIP特点:
- 灵活性高,支持多种类型的通信(音频、视频、即时消息等)。
- 通过代理服务器和注册服务器支持呼叫路由。
- 支持用户身份验证和会话控制,适合VoIP和多媒体通信。
- 在VoIP应用中常与RTP协议结合使用,提供音视频传输。
无线网络
WLAN
- WLAN(Wireless Local Area Network):是一种通过无线技术(如Wi-Fi)连接设备的局域网,不需要物理线路,通常用于家庭、办公室等小范围区域的网络覆盖。
- 优点:灵活性高,便于扩展,适合移动设备使用。
- 缺点:受环境因素影响较大,如信号干扰和范围限制。
无线局域网的组成
- 无线接入点(AP):无线网络中的中心设备,提供无线信号接入和与有线网络的连接。
- 客户端设备:连接到无线网络的设备,如笔记本电脑、智能手机等。
- 基站:提供无线信号覆盖的设备,通常是一个或多个接入点。
802.11局域网
物理层
802.11标准
是IEEE定义的无线局域网标准,提供不同的物理层和数据链路层协议来支持无线通信。
- 物理层的主要技术 :
- DSSS(Direct Sequence Spread Spectrum):直接序列扩频技术,常用于早期的802.11b。
- FHSS(Frequency Hopping Spread Spectrum):频率跳变扩频技术,早期用于802.11。
- OFDM(Orthogonal Frequency Division Multiplexing):正交频分复用技术,广泛用于802.11a/g/n/ac标准,提供高效的信号传输和抗干扰能力。
MAC
- CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance):一种用于无线网络的多路访问协议,避免多个设备同时发送数据而造成冲突。
- 工作原理:设备在发送数据之前先监听信道,如果信道空闲,则发送数据;如果信道繁忙,则等待一段随机时间后再尝试发送。
- 隐蔽站问题:在无线环境中,某些设备可能因为距离太远,无法相互听到彼此的信号,从而导致隐蔽站问题。即使信道已经被其他设备占用,设备仍然可能不知情,造成数据冲突。
- RTS/CTS(Request to Send / Clear to Send):用于解决隐蔽站问题的机制。设备发送RTS请求,接收方返回CTS响应,确保信道空闲后开始传输数据。
帧
- 控制帧:用于协调无线网络中设备的行为,如RTS、CTS、ACK等。
- 数据帧:携带实际传输的数据,包括源和目标地址、数据负载等信息。
- 管理帧:用于管理网络的连接、断开等操作,如Beacon帧、Probe请求和响应等。
蜂窝移动通信网
蜂窝网络的原理:蜂窝网络的名字来源于数学中“六边形按圆形平铺”的结论。为了高效覆盖区域,网络将地理区域划分为多个小的“蜂窝”,每个蜂窝由一个基站提供服务,且相邻的蜂窝使用不同的频率或信道,避免信号干扰。
- 频率复用:相邻蜂窝使用不同的频段或频率,以减少干扰。
- 优点:能有效提升覆盖区域内的频谱使用率。
移动IP
移动IP(Mobile IP):用于在移动设备更换网络时,确保设备的IP地址不变,从而支持设备的无缝移动通信。
- 工作原理
- 驻留代理:设备的“当前”IP地址,由一个驻留代理负责接收从外部网络发送到该IP的消息。
- 外部代理:当设备离开原网络时,外部代理负责在设备的新位置将数据包转发到驻留代理,从而实现数据的持续传输。
- 应用场景:适用于需要保持通信不中断的移动设备,如智能手机、车载通信系统等。