diff --git "a/\345\220\264\344\277\212\346\230\216/20240401\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240401\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..e949f6d2b6803e96f20f240eb384ed2497b7f69b --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240401\347\254\224\350\256\260.md" @@ -0,0 +1,5 @@ +计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。一个很形象地比喻就是我们的语言,我们大天朝地广人多,地方性语言也非常丰富,而且方言之间差距巨大。A地区的方言可能B地区的人根本无法接受,所以我们要为全国人名进行沟通建立一个语言标准,这就是我们的普通话的作用。同样,放眼全球,我们与外国友人沟通的标准语言是英语,所以我们才要苦逼的学习英语。 + +计算机网络协议同我们的语言一样,多种多样。而ARPA公司与1977年到1979年推出了一种名为ARPANET的网络协议受到了广泛的热捧,其中最主要的原因就是它推出了人尽皆知的TCP/IP标准网络协议。目前TCP/IP协议已经成为Internet中的"通用语言",下图为不同计算机群之间利用TCP/IP进行通信的示意图。 + +![img](https://www.runoob.com/wp-content/uploads/2018/09/1538030297-3401-20150904094424185-2018280216.gif) \ No newline at end of file diff --git "a/\345\220\264\344\277\212\346\230\216/20240403\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240403\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..c4721ea316c8f05e3c879afa8fea1e3ad325bb81 --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240403\347\254\224\350\256\260.md" @@ -0,0 +1,328 @@ +计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。一个很形象地比喻就是我们的语言,我们大天朝地广人多,地方性语言也非常丰富,而且方言之间差距巨大。A地区的方言可能B地区的人根本无法接受,所以我们要为全国人名进行沟通建立一个语言标准,这就是我们的普通话的作用。同样,放眼全球,我们与外国友人沟通的标准语言是英语,所以我们才要苦逼的学习英语。 + +计算机网络协议同我们的语言一样,多种多样。而ARPA公司与1977年到1979年推出了一种名为ARPANET的网络协议受到了广泛的热捧,其中最主要的原因就是它推出了人尽皆知的TCP/IP标准网络协议。目前TCP/IP协议已经成为Internet中的"通用语言",下图为不同计算机群之间利用TCP/IP进行通信的示意图。 + +![img](https://www.runoob.com/wp-content/uploads/2018/09/1538030297-3401-20150904094424185-2018280216.gif) + + + +### **1. 网络层次划分** + +为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。 + +除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示: + +![img](https://www.runoob.com/wp-content/uploads/2018/09/1538030296-7490-20150904094019903-1923900106.jpg) + +### 2. OSI七层网络模型 + +TCP/IP协议毫无疑问是互联网的基础协议,没有它就根本不可能上网,任何和互联网有关的操作都离不开TCP/IP协议。不管是OSI七层模型还是TCP/IP的四层、五层模型,每一层中都要自己的专属协议,完成自己相应的工作以及与上下层级之间进行沟通。由于OSI七层模型为网络的标准层次划分,所以我们以OSI七层模型为例从下向上进行一一介绍。 + +![img](https://www.runoob.com/wp-content/uploads/2018/09/1538030296-8668-20150904095142060-1017190812.gif) + +**1)物理层(Physical Layer)** + +激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。**该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。**物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。 + +**2)数据链路层(Data Link Layer)** + +数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 + +有关数据链路层的重要知识点: + +- **1> 数据链路层为网络层提供可靠的数据传输;** +-   **2> 基本数据单位为帧;** +-   **3> 主要的协议:以太网协议;** +-   **4> 两个重要设备名称:网桥和交换机。** +- **3)网络层(Network Layer)** + +网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。如果您想用尽量少的词来记住网络层,那就是"路径选择、路由及逻辑寻址"。 + +网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。具体的协议我们会在接下来的部分进行总结,有关网络层的重点为: + +-   **1> 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;** +-   **2> 基本数据单位为IP数据报;** +-   **3> 包含的主要协议:** +-   **IP协议(Internet Protocol,因特网互联协议);** +-   **ICMP协议(Internet Control Message Protocol,因特网控制报文协议);** +-   **ARP协议(Address Resolution Protocol,地址解析协议);** +-   **RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。** +-   **4> 重要的设备:路由器。** + +**4)传输层(Transport Layer)** + +第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。 传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。 网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。 有关网络层的重点: + +- 1> 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题; +- 2> 包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议); +- 3> 重要设备:网关。 + +**5)会话层** + +会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。 + +**6)表示层** + +表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。 + +**7)应用层** + +为操作系统或网络应用程序提供访问网络服务的接口。 + +会话层、表示层和应用层重点: + +- **1> 数据传输基本单位为报文;** +- **2> 包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。** + +### 3. IP地址 + +**1)网络地址** + +IP地址由网络号(包括子网号)和主机号组成,网络地址的主机号为全0,网络地址代表着整个网络。 + +**2)广播地址** + +广播地址通常称为直接广播地址,是为了区分受限广播地址。 + +广播地址与网络地址的主机号正好相反,广播地址中,主机号为全1。当向某个网络的广播地址发送消息时,该网络内的所有主机都能收到该广播消息。 + +**3)组播地址** + +D类地址就是组播地址。 + +先回忆下A,B,C,D类地址吧: + +A类地址以0开头,第一个字节作为网络号,地址范围为:0.0.0.0~127.255.255.255;(**modified @2016.05.31**) + +B类地址以10开头,前两个字节作为网络号,地址范围是:128.0.0.0~191.255.255.255; + +C类地址以110开头,前三个字节作为网络号,地址范围是:192.0.0.0~223.255.255.255。 + +D类地址以1110开头,地址范围是224.0.0.0~239.255.255.255,D类地址作为组播地址(一对多的通信); + +E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使用。 + +注:只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。 + +**4)255.255.255.255** + +该IP地址指的是受限的广播地址。受限广播地址与一般广播地址(直接广播地址)的区别在于,受限广播地址只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组;一般广播地址既可在本地广播,也可跨网段广播。例如:主机192.168.1.1/30上的直接广播数据包后,另外一个网段192.168.1.5/30也能收到该数据报;若发送受限广播数据报,则不能收到。 + +注:一般的广播地址(直接广播地址)能够通过某些路由器(当然不是所有的路由器),而受限的广播地址不能通过路由器。 + +**5)0.0.0.0** + +常用于寻找自己的IP地址,例如在我们的RARP,BOOTP和DHCP协议中,若某个未知IP地址的无盘机想要知道自己的IP地址,它就以255.255.255.255为目的地址,向本地范围(具体而言是被各个路由器屏蔽的范围内)的服务器发送IP请求分组。 + +**6)回环地址** + +127.0.0.0/8被用作回环地址,回环地址表示本机的地址,常用于对本机的测试,用的最多的是127.0.0.1。 + +**7)A、B、C类私有地址** + +私有地址(private address)也叫专用地址,它们不会在全球使用,只具有本地意义。 + +A类私有地址:10.0.0.0/8,范围是:10.0.0.0~10.255.255.255 + +B类私有地址:172.16.0.0/12,范围是:172.16.0.0~172.31.255.255 + +C类私有地址:192.168.0.0/16,范围是:192.168.0.0~192.168.255.255 + +### 4. 子网掩码及网络划分 + +随着互连网应用的不断扩大,原先的IPv4的弊端也逐渐暴露出来,即网络号占位太多,而主机号位太少,所以其能提供的主机地址也越来越稀缺,目前除了使用NAT在企业内部利用保留地址自行分配以外,通常都对一个高类别的IP地址进行再划分,以形成多个子网,提供给不同规模的用户群使用。 + +这里主要是为了在网络分段情况下有效地利用IP地址,通过对主机号的高位部分取作为子网号,从通常的网络位界限中扩展或压缩子网掩码,用来创建某类地址的更多子网。但创建更多的子网时,在每个子网上的可用主机地址数目会比原先减少。 + +**什么是子网掩码?** + +子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。它和IP地址一样也是使用点式十进制来表示的。如果两个IP地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。 + +**在计算子网掩码时,我们要注意IP地址中的保留地址,即" 0"地址和广播地址,它们是指主机地址或网络地址全为" 0"或" 1"时的IP地址,它们代表着本网络地址和广播地址,一般是不能被计算在内的。** + +**子网掩码的计算:** + +对于无须再划分成子网的IP地址来说,其子网掩码非常简单,即按照其定义即可写出:如某B类IP地址为 10.12.3.0,无须再分割子网,则该IP地址的子网掩码255.255.0.0。如果它是一个C类地址,则其子网掩码为 255.255.255.0。其它类推,不再详述。下面我们关键要介绍的是一个IP地址,还需要将其高位主机位再作为划分出的子网网络号,剩下的是每个子网的主机号,这时该如何进行每个子网的掩码计算。 + +下面总结一下有关子网掩码和网络划分常见的面试考题: + +  **1)利用子网数来计算** + +在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。 + +(1) 将子网数目转化为二进制来表示; + +如欲将B类IP地址168.195.0.0划分成27个子网:27=11011; + +(2) 取得该二进制的位数,为N; + +该二进制为五位数,N = 5 + +(3) 取得该IP地址的类子网掩码,将其主机地址部分的的前N位置1即得出该IP地址划分子网的子网掩码。 + +将B类地址的子网掩码255.255.0.0的主机地址前5位置 1,得到 255.255.248.0 + +**2)利用主机数来计算** + +如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台: + +(1) 将主机数目转化为二进制来表示; + +``` +700=1010111100 +``` + +(2) 如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为N,这里肯定 N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位; + +该二进制为十位数,N=10; + +(3) 使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。 + +将该B类地址的子网掩码255.255.0.0的主机地址全部置1,得到255.255.255.255,然后再从后向前将后 10位置0,即为:11111111.11111111.11111100.00000000,即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址 168.195.0.0的子网掩码。 + +**3)还有一种题型,要你根据每个网络的主机数量进行子网地址的规划和****计算子网掩码。这也可按上述原则进行计算。** + +比如一个子网有10台主机,那么对于这个子网需要的IP地址是: + +``` +10+1+1+1=13 +``` + +**注意:加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网****络地址和广播地址。** + +因为13小于16(16等于2的4次方),所以主机位为4位。而256-16=240,所以该子网掩码为255.255.255.240。 + +如果一个子网有14台主机,不少人常犯的错误是:依然分配具有16个地址空间的子网,而忘记了给网关分配地址。这样就错误了,因为14+1+1+1=17,17大于16,所以我们只能分配具有32个地址(32等于2的5次方)空间的子网。这时子网掩码为:255.255.255.224。 + +### 5. ARP/RARP协议 + +**地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。**主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。**ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。** + +ARP工作流程举例: + +主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01; + +主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02; + +当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程: + +- (1)根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。 +- (2)如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。 +- (3)主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。 +- (4)主机B将包含其MAC地址的ARP回复消息直接发送回主机A。 +- (5)当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。 + +**逆地址解析协议,即RARP,功能和ARP协议相对,其将局域网中某个主机的物理地址转换为IP地址** + +,比如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。 + +RARP协议工作流程: + +- (1)给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址; +- (2)本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址; +- (3)如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用; +- (4)如果不存在,RARP服务器对此不做任何的响应; + +### 6. 路由选择协议 + +常见的路由选择协议有:RIP协议、OSPF协议。 + +**RIP****协议** :底层是贝尔曼福特算法,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。 + +**OSPF****协议** :Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。 + +### 7. TCP/IP协议 + +**TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。** + +IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 + +TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。TCP提供的是一种可靠的数据流服务,采用"带重传的肯定确认"技术来实现传输的可靠性。TCP还采用一种称为"滑动窗口"的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。 + +**TCP报文首部格式:** + +![img](https://www.runoob.com/wp-content/uploads/2018/09/1538030297-3779-20150904110054856-961661137.png) + +**TCP协议的三次握手和四次挥手:** + +![img](https://www.runoob.com/wp-content/uploads/2018/09/1538030297-7824-20150904110008388-1768388886.gif) + +  **注:seq**:"sequance"序列号;**ack**:"acknowledge"确认号;**SYN**:"synchronize"请求同步标志;**;ACK**:"acknowledge"确认标志"**;****FIN**:"Finally"结束标志。 + +**TCP连接建立过程:**首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 + +**TCP连接断开过程:**假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。",Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了! + +**为什么要三次握手?** + +在只有两次"握手"的情形下,假设Client想跟Server建立连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送一遍;这个时候Server端仅收到一个连接请求,因此可以正常的建立连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,而是有可能数据传输过程因为网络并发量很大在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向他发送数据...问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,"三次握手"很有必要! + +**为什么要四次挥手?** + +试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行! + +使用TCP的协议:FTP(文件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、POP3(和SMTP相对,用于接收邮件)、HTTP协议等。 + +### 8. UDP协议 + +**UDP用户数据报协议,是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。** + +UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。 + +UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。 + +每个UDP报文分UDP报头和UDP数据区两部分。报头由四个16位长(2字节)字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验值。UDP报头由4个域组成,其中每个域各占用2个字节,具体如下: + +- (1)源端口号; +- (2)目标端口号; +- (3)数据报长度; +- (4)校验值。 + +使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP。 + +**TCP** **与** **UDP** **的区别:**TCP是面向连接的,可靠的字节流服务;UDP是面向无连接的,不可靠的数据报服务。 + +### 9. DNS协议 + +DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务,**可以简单地理解为将URL转换为IP地址**。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的,DNS就是进行域名解析的服务器。DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。 + +### 10. NAT协议 + +  NAT网络地址转换(Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。 + +### 11. DHCP协议 + +DHCP动态主机设置协议(Dynamic Host Configuration Protocol)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。 + +### 12. HTTP协议 + +超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。  **HTTP** **协议包括哪些请求?** + +GET:请求读取由URL所标志的信息。 + +POST:给服务器添加信息(如注释)。 + +PUT:在给定的URL下存储一个文档。 + +DELETE:删除给定的URL所标志的资源。 + +  **HTTP** **中,** **POST** **与** **GET** **的区别** + +- 1)Get是从服务器上获取数据,Post是向服务器传送数据。 +- 2)Get是把参数数据队列加到提交表单的Action属性所指向的URL中,值和表单内各个字段一一对应,在URL中可以看到。 +- 3)Get传送的数据量小,不能大于2KB;Post传送的数据量较大,一般被默认为不受限制。 +- 4)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。 + +- I. 所谓 **安全的** 意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。 +- II. **幂等** 的意味着对同一URL的多个请求应该返回同样的结果。 + +### 13. 一个举例 + +在浏览器中输入 **http://www.baidu.com/** 后执行的全部过程。 + +现在假设如果我们在客户端(客户端)浏览器中输入 http://www.baidu.com, 而 baidu.com 为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作: + +- 1)客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。 +- 2)在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。 +- 3)客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。 +- 4)客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。 \ No newline at end of file diff --git "a/\345\220\264\344\277\212\346\230\216/20240407\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240407\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..a32951501739fa77de117a3e5befa4272df8d484 --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240407\347\254\224\350\256\260.md" @@ -0,0 +1,90 @@ +**光纤**(Optical fiber)又称**光导纤维**,是一种由玻璃或塑料制成的纤维,利用光在这些纤维中以全内反射原理传输的光传导工具。微细的光纤封装在塑料护套中,使得它能够弯曲而不至于断裂。通常光纤的一端的发射设备使用发光二极管或一束激光将光脉冲发送至光纤中,光纤的另一端的接收设备使用光敏组件检测脉冲。 + +![img](https://pic2.zhimg.com/v2-a388b972d68007bb75647ab6a4319a47_b.jpg)一束光纤 + +包含光纤的线缆称为光缆。由于信息在光导纤维的传输损失比电在电线传导的损耗低得多,更因为主要生产原料是硅,蕴藏量极大,较易开采,所以价格很便宜,促使光纤被用作长距离的信息传递介质。随着光纤的价格进一步降低,光纤也被用于医疗和娱乐的用途。 + +光纤主要分为两类,渐变光纤与突变光纤。前者的折射率是渐变的,而后者的折射率是突变的。另外还分为单模光纤及多模光纤。近年来,又有新的光子晶体光纤问世。 + +光导纤维是双重构造,纤芯部分是高折射率玻璃,表层部分是低折射率的玻璃或塑料,光在纤芯内传输,并在表层交界处不断进行全反射,沿“之”字形向前传输。这种纤维比头发稍粗,这样细的纤维要有折射率截然不同的双重结构分布,是一个非常惊人的技术。各国科学家经过多年努力,创造了内附着法、MCVD法、VAD法等等,制成了超高纯石英玻璃,特制成的光导纤维传输光的效率有了非常明显的提高。现在较好的光导纤维,其光传输损失每公里只有零点二分贝;也就是说传播一公里后只损耗4.5%。 + +## 基本原理 + +光纤是圆柱形的介质波导,应用全内反射原理来传导光线。光纤的结构大致分为里面的纤芯部分与外面的包覆部分。为了要局限光信号于纤芯,包层的折射率必须小于纤芯的折射率。渐变光纤的折射率是缓慢改变的,从轴心到包覆,逐渐地减小;而突变光纤在核心-包覆边界区域的折射率是急剧改变的。 + +![img](https://picx.zhimg.com/v2-62147e63dce16007ca4878753c866941_b.jpg)各种各样的光纤 + +### 折射率 + +折射率可以用来计算在物质里的光线速度。在真空里,及外太空,光线的传播速度最快,大约为3亿米/秒。一种物质的折射率是真空光速除以光线在这物质里传播的速度。所以,根据定义,真空折射率是1。折射率越大,光线传播的速度越慢。通常光纤的核心的折射率是1.48,包覆的折射率是1.46。所以,光纤传导信号的速度粗算大约为2亿米/秒。电话信号,经过光纤传导,从纽约到悉尼,大约12000公里距离,会有最低0.06秒时间的延迟。 + +### 全内反射 + +当移动于密度较高的介质的光线,以大角度入射于核心-包覆边界时,假若这入射角(光线与边界面的法线之间的夹角)的角度大于临界角的角度,则这光线会被完全地反射回去。光纤就是应用这种效应来局限传导光线于核心。在光纤内部传播的光线会被边界反射过来,反射过去。 + +![img](https://picx.zhimg.com/v2-9d8b7e4ceb930342857bcab42e8ce405_b.jpg)激光的反弹于一根压克力棍内部,显示出光线的全反射 + +由于光线入射于边界的角度必须大于临界角的角度,只有在某一角度范围内射入光纤的光线,才能够通过整个光纤,不会泄漏损失。这角度范围称为光纤的受光锥角,是光纤的核心折射率与包覆折射率的差值的函数。 + +更简单地说,光线射入光纤的角度必须小于受光角的角度,才能够传导于光纤核心。受光角的正弦是光纤的数值孔径。数值孔径越大的光纤,越不需要精密的熔接和操作技术。单模光纤的数值孔径比较小,需要比较精密的熔接和操作技术。 + +## 光纤分类 + +## 多模光纤 + +核心直径较大的光纤(大于10 微米)的物理性质,可以用几何光学的理论来分析,这种光纤称为多模光纤,用于通信用途时,线材会以橘色外皮做为识别。 + +![img](https://picx.zhimg.com/v2-f753b9e41b8a8a0e56d26de475323429_b.jpg)光波传播于多模光纤 + +在一个多模突变光纤内,光线靠着全反射传导于核心。当光线遇到核心-包覆边界时,假若入射角大于临界角,则光线会被完全反射。临界角的角度是由核心折射率与包覆折射率共同决定。假若入射角小于临界角,则光线会折射入包覆,无法继续传导于核心。临界角又决定了光纤的受光角,通常以数值孔径来表示其大小。较高的数值孔径会允许光线,以较近轴心和较宽松的角度,传导于核心,造成光线和光纤更有效率的耦合。但是,由于不同角度的光线会有不同的光程,通过光纤所需的时间也会不同,所以,较高的数值孔径也会增加色散。有些时候,较低的数值孔径会是更适当的选择。 + +渐变光纤的核心的折射率,从轴心到包覆,逐渐地减低。这会使朝着包覆传导的光线,平滑缓慢地改变方向,而不是急剧地从核心-包覆边界反射过去。这样,大角度光线会花更多的时间,传导于低折射率区域,而不是高折射率区域。因此,所形成的曲线路径,会减低多重路径色散。工程师可以精心设计渐变光纤的折射率分布,使得各种光线在光纤内的轴传导速度差值,能够极小化。这理想折射率分布应该会非常接近于抛物线分布。 + +### 单模光纤 + +核心直径小于传播光波波长约十倍的光纤,不能用几何光学理论来分析其物理性质。替而代之,必须改用麦克斯韦方程组来分析,导出相关的电磁波方程式。视为光学波导,光纤可以传播多于一个横模的光波。只允许一种横模传导的光纤称为单模光纤。用于通信用途时,线材会以黄色外皮做为识别。大直径核心、多横模的光纤的物理性质,也可以用电磁波波动方程式分析。结果会显示出,这种光纤允许多于一个横模的光波。这样的解析多模光纤,所得到的结果,与几何光学的解析结果大致相同。 + +![img](https://pic2.zhimg.com/v2-92cd812583379a9caca158fe4c7cdd29_b.jpg)单模光纤内部结构:1.核心:直径8 µm2.包覆:直径125 µm3.缓冲层:直径250 µm4.外套:直径400 µm + +波导分析显示,在光纤内的光波的能量,并不是全部局限于核心里。令人惊讶地,特别是在单模光纤里,有很大一部分的能量是以渐逝波的形式传导于包覆。 + +最常见的一种单模光纤,核心直径大约为7.5–9.5 微米,专门用于传导近红外线。多模光纤的核心直径可以小至50微米,或者大至几百微米。 + +### 特种光纤 + +有些特种光纤的核心或包覆会特别地制作成非圆柱形,通常像椭圆形或长方形。这包括保偏光纤。 + +光子晶体光纤是一种新型的光纤,其折射率以规律性的模式变化(通常沿着光纤的轴向会有圆柱空洞)。光子晶体光纤应用衍射效应(单独的或加上全反射效应)来局限光波于光纤核心。 + +## 衰减机制 + +在介质内,光纤的衰减,又称为传输损失,指的是随着传输距离的增加,光束(或信号)强度会减低。由于现代光传输介质的高质量透明度,光纤的衰减系数的单位通常是dB/km(每公里长度介质的分贝)。因为石英玻璃纤维能够满足严格的规定,局限光束于内部,传输介质材料大多是由石英玻璃纤维制成的。各种各样的光纤。 + +![img](https://pica.zhimg.com/v2-95608dc5b366370aaa933df40a85965c_b.jpg)在ZBLAN和二氧化硅光纤内的光衰减 + +阻碍数字信号远距离传输的一个重要因素就是衰减。因此,减少衰减是光纤光学研究的必然目标。经过多次实验得到的结果,显示出散射和吸收是造成光纤衰减的主要原因之一。 + +### 光散射 + +因为光线的全反射,光线可以传输于光纤核心。粗糙、不规则的表面,甚至在分子层次,也会使光线往随机方向反射,称这现象为漫反射或散射,其特征通常是多种不同的反射角。 + +大多数物体因为表面的光散射,可以被人类视觉侦测到。光散射跟入射光波的波长有关。可见光的波长大约是1微米。人类视觉无法侦测到小于这尺寸的物体。所以,位于可见物体表面的散射中心也有类似的空间尺寸。 + +光波入射于内部的边界面时,会因为非相干散射而造成衰减。对于晶体材料或多晶材料,像金属或陶瓷,除了细孔以外,大部分内部接口的形式乃晶界,分隔了晶粒尺寸的微小区域。材料学专家发现,假若能将散射中心(或晶界)的尺寸减小到低于入射光波的波长,则光散射的影响会减小很多,可以被忽略。这发现引起更多有关透明陶瓷材料的研究。 + +类似地,在光学光纤内,光散射是由分子层次的不规则玻璃结构所造成的。很多材料学专家认为玻璃无疑是多晶材料的极限案例。而其展现出短距离现像的畴域 (domain),则是金属、合金、玻璃、陶瓷等等的基础建筑材料。散布在这些畴域之间,有很多微结构缺陷,是造成光散射的最理想地点。当功率变高时,光纤的非线性光学行为也可能会造成光散射。 + +### 紫外线和红外线吸收 + +除了光散射以外,光纤材料会选择性地吸收某些特定波长的光波,这也会造成衰减或信号损失。吸收光波的机制类似颜色显现的机制。 + +![img](https://pic2.zhimg.com/v2-3d4d4e0fe7938f76e28a45db9789519d_b.jpg)漫反射 + +- 在电子层次,光纤材料的每种组成原子,其不同的电子轨域的能级差值,决定了光纤材料能否吸收某特定频率或频率带的光子。这些特定频率或频率带的光子,大多属于紫外线或可见光的频区。这就是很多可见物质显示出颜色的机制。 +- 在原子或分子层次,振动频率、堆积结构、化学键强度等等,这些重要因素共同决定了材料传输红外线,远红外线,无线电波,微波等等长波的能力。 + +在一个晶体物体内部,振动的简正模。在设计任何透明光学组件前,必须先知道材料的性质和限制,然后才能选择适当的材料。任何材料在低频率区域的晶格吸收特性,也赋予了这项材料对于这低频率光波的透明限制。这是组成的原子或分子的热感应振动,和入射光波之间,相互耦合的结果。因此,在红外线频区(> 1微米),每一种材料都要避开这些由于原子或分子振动机制而产生的吸收区域。 + +因为某特定频率的红外线光波,恰恰好匹配了,某种材料的原子或分子的自然振动频率,这种材料会选择性地吸收这特定频率的光波。由于不同的原子或分子有不同的自然振动频率,它们会选择性地吸收不同频率(或不同频率带)的红外线光波。 + +由于光波频率不匹配光纤材料的自然振动频率,会造成光波的反射或透射。当红外线光波入射于这不匹配的光纤材料,一部分能量会被反射,另一部分能量会被透射。 \ No newline at end of file diff --git "a/\345\220\264\344\277\212\346\230\216/20240408\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240408\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..070a92500da7415b923158ba894e094ae7ffd526 --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240408\347\254\224\350\256\260.md" @@ -0,0 +1,79 @@ +**无线电**(Radio),又称无线电波、射频电波、电波,或射频,是指在自由空间(包括空气和真空)传播的电磁波,在电磁波谱上,其波长长于红外线光(IR)。 + +![img](https://pic2.zhimg.com/v2-b180ac8adc0a3ec804169d1136f280ed_b.jpg)AM讯号在频谱仪(瀑布图)上 + +频率范围为300 GHz以下,其对应的波长范围为1毫米以上。就像其他电磁波一样,无线电波以光速前进。经由闪电或天文物体,可以产生自然的无线电波。由人工产生的无线电波,被应用在无线通讯、广播、雷达、通讯卫星、导航系统、电脑网络等应用上。 + +无线电发射机,借由交流电,经过振荡器,变成高频率交流电,产生电磁场,而经由电磁场可产生无线电波。无线电波像磁铁,有同性相斥、异性相吸的现象。同类电子会互相排斥,因此当无线电波射出时,会将前方电波往前推,当连续电波一直射出来时,电波就会在空气中传播。 + +## 历史及发展 + +关于谁是无线电台的发明人还存在争议,现在普遍认为是尼古拉·特斯拉。 + +1893年,尼古拉·特斯拉在美国密苏里州圣路易斯首次公开展示了无线电通信。在为“费城佛兰克林学院”以及全国电灯协会做的报告中,他描述并演示了无线电通信的基本原理。他所制作的仪器包含电子管发明之前无线电系统的所有基本要素。 + +亚历山大·波波夫于1895年5月7日他在彼得堡物理和化学协会物理学部年会上演示了他制成的一架无线电接收装置-雷电指示器,这一天后来被俄罗斯定为“无线电日”庆祝。俄罗斯人认为他才是无线电的发明人。 + +![img](https://pica.zhimg.com/v2-b187147a9859ee66483cf2382f6145de_b.jpg)美国早期的收音机广告 + +古列尔莫·马可尼拥有通常被认为是世界上第一个无线电技术的专利,英国专利12039号,“电脉冲及信号传输技术的改进以及所需设备”。 + +尼古拉·特斯拉1897年在美国获得了无线电技术的专利。然而,美国专利局于1904年将其专利权撤销,转而授予马可尼发明无线电的专利。这一举动可能是受到马可尼在美国的经济后盾人物,包括汤玛斯·爱迪生,安德鲁·卡耐基影响的结果。1909年,马可尼和卡尔·费迪南德·布劳恩由于“发明无线电报的贡献”获得诺贝尔物理学奖。 + +1898年,马可尼在英格兰切尔姆斯福德的霍尔街开办了世界上首家无线电工厂,雇佣了大约50人。 + +1943年,在特斯拉去世后不久,美国最高法院重新认定特斯拉的专利有效。这一决定承认他的发明在马可尼的专利之前就已完成。有些人认为作出这一决定明显是出于经济原因。这样二战中的美国政府就可以避免付给马可尼的公司专利使用费。 + +## 基本原理 + +用于远程通信的无线电系统通常包含以下的部件。无线电技术经过100多年的发展,这些收发机制的实现方法已经变得多种多样,而现代的工程师可以根据实际需求选择最优的方法。 + +### 调制和发射器 + +每个无线电系统都具有发射器。发射器的功能借由能够制造出所需振荡频率的交流电源所实现。发射器含有用于调制的系统。其功能是将电源输送来的信号加以修改,并借此传递信息。最简单的调制方法是不时地切断电源,正如拍电报时发报员的工作。这种简单的调制,手工就能完成。而现代无线电通讯所需的复杂调制则涉及到许多交流电属性的细微调整,如振幅、频率和相位(而且往往同时调节的参数不止一个)。随后,发射器将调制后的信号传递给调谐过的共振天线。此举能将震荡电流转化为电磁波,并以无线的形式传播(有时会受到偏振的影响)。 + +![img](https://pica.zhimg.com/v2-106d3c9cb03b5fb9d173e8c221309748_b.jpg)音频讯号(最上方图)可借由调幅或调频射电传送 + +载波调幅借由调整信号振幅(即信号强度),使之与所要传递的讯号的变化相同步,而传送讯息。例如,信号强弱可用于描述话筒传出的声震动情况,或者用于确定电视荧幕上某个画素的荧光情况。世界上首个声讯电台采用的便是此种调制方式,而时至今日它仍被广泛使用。"AM"目前常用于指中波广播电台。 + +如右图所示,在调幅这种调谐方式下,所产生的电磁波频率并不随时间推移而发生变化。 + +调频则是通过调整载波的频率来达到送信的目的。这种情况下,载波的瞬时频率同步于所传递的讯号的瞬时频率。数字信号的传递可以借由将载波在数个离散的频率间切换来实现。此技术被称为频率偏移调变。 + +FM现时常指甚高频高保真广播。无线电视的音轨讯号也是通过超高频信道传送的。 + +### 天线 + +天线可以将电流转换为无线电波,也可以将无线电波转换为电流。常配合发送器或接收器一起使用。在传输时,发送器会产生震荡的无线电频率电流到天线上,而天线会产生电磁辐射。在接收时,天线会拮取电磁波的部分能量,产生微小的电压,再透过接收器放大。天线可以用来传送及接收的用途。 + +![img](https://pic2.zhimg.com/v2-796733c5c8b7f4cba60a0fa987937c8d_b.jpg)屋顶的电视天线,属于八木天线 + + + +### 传播 + +电磁波产生后,可以在空间中直接传播,但其路径也可能被反射、折射及衍射等影响。电磁波的强度会因几何距离而变小(平方反比定律),有些情形下介质也会吸收能量。噪声也会影响电磁波的讯号,电磁干扰的来源可能是自然的,也可是人造的(例如其他电磁波传送器或是非蓄意辐射)。噪声也可能因为设备本身的特性而产生,如果噪声的强度太大,就无法分辨电磁波中的讯号及噪声,这也是无线电通讯的基本限制 。 + +### 谐振 + +无线电中的谐振电路可以选择接收特定频段的信号。谐振电路可以只针对特定频率的信号有较大的响应,对其他特定频率信号的响应会较小,因此无线电接收器可以区分不同频率下的信号。 + +### 接收器和解调 + +电磁波可以用调谐过的天线接收其讯号。天线可以拮取一些电磁波的能量,变成电路中的谐振电流。接收器可以将电流解调,转换成可用的的讯号。接收器一般也会调谐到可以接收特定频段的讯号,拒绝其他频段的信号。 + +![img](https://pic4.zhimg.com/v2-40bdcdd3a5d831bc3c14d82168bac263_b.jpg)一台矿石收音机,其中包括天线、可变电阻、线圈、猫须整流器、电容器、耳机及接地 + +早期的无线电系统只靠天线拮取到的能量来产生讯号。后来发明了像真空管及晶体管等电子设备,可以将微弱的讯号放大,因此无线电就更为普及。无线电的应用包括无线对讲机、儿童的玩具、到无人行星探测任务先锋计划的控制,也包括广播及其他的应用。 + +无线电接收机从天线中接收讯号,利用电子滤波器从天线接收到的讯号中分离出想要的讯号,再利用放大器将讯号放大到适合后续处理的准位,最后将讯号转换为使用者需要的形式,例如声音、影像、数位资料、量测值及导航的位置等。 + +### 无线电频段 + +无线电的频率范围从数Hz到300GHz,不过商业上重要的无线电频段只占其中的一小部分。其他频率超过无线电的电磁波包括微波、红外线、可见光、紫外线、X光及伽马射线。由于无线电频率范围内的光子能量太小,无法游离原子中的电子,因此无线电归类为非游离辐射。 + +![img](https://pic3.zhimg.com/v2-a3f801d89967783c4d75a4247be93e72_b.jpg) + +## 应用 + +无线电的最早应用于航海中,使用摩尔斯电报在船与陆地间传递信息。现在,无线电有着多种应用形式,包括无线数据网,各种移动通信以及无线电广播等。 \ No newline at end of file diff --git "a/\345\220\264\344\277\212\346\230\216/20240410\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240410\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..eb2c020ea466c891cd8ced7282173cdde5a1f378 --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240410\347\254\224\350\256\260.md" @@ -0,0 +1,159 @@ +## 简介 + +`HTTP`协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。 + +> **注意**:客户端与服务器的角色不是固定的,一端充当客户端,也可能在某次请求中充当服务器。这取决与请求的发起端。HTTP协议属于应用层,建立在传输层协议TCP之上。客户端通过与服务器建立TCP连接,之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。 + +`HTTP` 是一种**无状态** (stateless) 协议, `HTTP`协议本身不会对发送过的请求和相应的通信状态进行持久化处理。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务, 提高效率。 + +然而,在许多应用场景中,我们需要保持用户登录的状态或记录用户购物车中的商品。由于`HTTP`是无状态协议,所以必须引入一些技术来记录管理状态,例如`Cookie`。 + +## 正文 + +## HTTP URL + +`HTTP URL` 包含了用于查找某个资源的详细信息, 格式如下: + +```text +http://host[":"port][abs_path] +``` + +## HTTP请求 + +下图是在网上找的一张图,觉得能很好的表达HTTP请求的所发送的数据格式。 + +![img](https://pic2.zhimg.com/80/v2-12836e928e97f0d1acf375b34981a071_720w.webp) + +由上图可以看到,http请求由请求行,消息报头,请求正文三部分构成。 + +## HTTP请求状态行 + +请求行由请求`Method`, `URL` 字段和`HTTP Version`三部分构成, 总的来说请求行就是定义了本次请求的请求方式, 请求的地址, 以及所遵循的HTTP协议版本例如: + +```text +GET /example.html HTTP/1.1 (CRLF) +``` + +HTTP协议的方法有: *`GET`: 请求**获取**Request-URI所标识的资源* `POST`: 在Request-URI所标识的资源后**增加**新的数据 *`HEAD`: 请求获取由Request-URI所标识的资源的**响应消息报头*** `PUT`: 请求服务器**存储或修改**一个资源,并用Request-URI作为其标识 *`DELETE`: 请求服务器**删除**Request-URI所标识的资源* `TRACE`: 请求服务器回送收到的请求信息,主要用于**测试或诊断** *`CONNECT`: 保留将来使用* `OPTIONS`: 请求查询服务器的性能,或者查询与资源相关的选项和需求 + +## HTTP请求头 + +消息报头由一系列的键值对组成,允许客户端向服务器端发送一些附加信息或者客户端自身的信息,主要包括: + +![img](https://pic2.zhimg.com/80/v2-8b50f49b69a70379a52b47060dcdf1f9_720w.webp) + +HTTP请求正文 + +只有在发送`POST`请求时才会有请求正文,`GET`方法并没有请求正文。 + +## HTTP请求报文 + +![img](https://pic4.zhimg.com/80/v2-839818777263adb12e93aafda6595633_720w.webp) + +## HTTP响应 + +与HTTP请求类似,先上一张图: + +![img](https://pic2.zhimg.com/80/v2-8eefa42df5c663cf259b39be57359bb1_720w.webp) + +HTTP响应也由三部分组成,包括状态行,消息报头,响应正文。 + +## HTTP响应状态行 + +状态行也由三部分组成,包括HTTP协议的版本,状态码,以及对状态码的文本描述。例如: + +```text +HTTP/1.1 200 OK (CRLF) +``` + +## HTTP响应状态码 + +状态代码有三位数字组成,第一个数字定义了响应的**类别**,且有五种可能取值: *`1xx`:**指示信息** - 表示请求已接收,继续处理* `2xx`:**成功** - 表示请求已被成功接收、理解、接受 *`3xx`:**重定向** - 要完成请求必须进行更进一步的操作* `4xx`:**客户端错误** - 请求有语法错误或请求无法实现 * `5xx`:**服务器端错误** - 服务器未能实现合法的请求 + +常见状态代码、状态描述、说明: *`200`: **OK** - 客户端请求成功* `400`: **Bad Request** - 客户端请求有语法错误,不能被服务器所理解 *`401`: **Unauthorized** - 请求未经授权,这个状态代码必须和`WWW-Authenticate`报头域一起使用* `403`: **Forbidden** - 服务器收到请求,但是拒绝提供服务 *`404`: **Not Found** - 请求资源不存在,eg:输入了错误的URL* `500`: **Internal Server Error** - 服务器发生不可预期的错误 * `503`: **Server Unavailable** - 服务器当前不能处理客户端的请求,一段时间后,可能恢复正常 + +## HTTP响应状态码说明 + +![img](https://pic2.zhimg.com/80/v2-9973f22000aaa5f465faadd0a75663e9_720w.webp) + +![img](https://pic1.zhimg.com/80/v2-933763e166c645d219b6dbbf02424614_720w.webp) + +![img](https://pic4.zhimg.com/80/v2-d3db700a0c258b1d4690e4f4f143b873_720w.webp) + +![img](https://pic1.zhimg.com/80/v2-0074e43408367b75c2b8dbefdf582de8_720w.webp) + +HTTP响应报文 + +![img](https://pic1.zhimg.com/80/v2-d85efb19aec970b506b8cc7d2a2821dc_720w.webp) + +## HTTP协议详解 + +## HTTP的五大特点 + +1. 支持**客户/服务器**模式。 +2. **简单快速**:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有`GET`、`HEAD`、`POST`。每种方法规定了客户与服务器联系的类型不同。由于`HTTP`协议简单,使得`HTTP`服务器的程序规模小,因而通信速度很快。 +3. **灵活**:HTTP允许传输任意类型的数据对象。正在传输的类型由`Content-Type`加以标记。 +4. **无连接**:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。早期这么做的原因是请求资源少,追求快。后来通过`Connection: Keep-Alive`实现长连接 +5. **无状态**:`HTTP`协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 + +## 非持久连接和持久连接 + +在实际的应用中,客户端往往会发出一系列请求,接着服务器端对每个请求进行响应。对于这些请求|响应,如果每次都经过一个单独的TCP连接发送,称为**非持久连接**。反之,如果每次都经过相同的TCP连接进行发送,称为**持久连接**。 + +![img](https://pic4.zhimg.com/80/v2-1fdf96c5bd825e2d54b932eebb880de7_720w.webp) + + + +非持久连接在每次请求|响应之后都要断开连接,下次再建立新的TCP连接,这样就造成了大量的通信开销。例如前面提到的往返时间`(RTT)` 就是在建立TCP连接的过程中的代价。 + +非持久连接给服务器带来了沉重的负担,每台服务器可能同时面对数以百计甚至更多的请求。持久连接就是为了解决这些问题,其特点是一直保持TCP连接状态,直到遇到明确的中断要求之后再中断连接。持久连接减少了通信开销,节省了通信量。 + +## HTTP和HTTPS + +## HTTP的不足 + +- 通信使用明文(不加密),内容可能会被窃听 +- 不验证通信方的身份,因此有可能遭遇伪装 +- 无法证明报文的完整性,所以有可能已遭篡改 + +## HTTPS介绍 + +`HTTP` 协议中没有加密机制,但可以通 过和 `SSL`(Secure Socket Layer, **安全套接层** )或 `TLS`(Transport Layer Security, **安全层传输协议**)的组合使用,加密 `HTTP` 的通信内容。属于通信加密,即在整个通信线路中加密。 + +```text +HTTP + 加密 + 认证 + 完整性保护 = HTTPS(HTTP Secure ) +``` + +![img](https://pic1.zhimg.com/80/v2-6afa8562333419e7aac98f8dc4b13340_720w.webp) + +`HTTPS` 采用**共享密钥加密**(对称)和**公开密钥加密**(非对称)两者并用的**混合**加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。 + +> 所以应充分利用两者各自的优势, 将多种方法组合起来用于通信。 在**交换密钥**阶段使用**公开密钥加密**方式,之后的建立通信**交换报文**阶段 则使用**共享密钥加密**方式。 + + + +![img](https://pic3.zhimg.com/80/v2-9af3ae935bd8bf85261d3469a72f1a62_720w.webp) + + + +`HTTPS`握手过程的简单描述如下: + +![img](https://pic3.zhimg.com/80/v2-a546b518ccc741e8705f1e00afe4a33a_720w.webp) + + + +1. 浏览器将自己支持的一套加密规则发送给网站。 + `服务器获得浏览器公钥` +2. 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。 `浏览器获得服务器公钥` +3. 获得网站证书之后浏览器要做以下工作: + (a). 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。 + (b). 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码(接下来通信的密钥),并用证书中提供的公钥加密(共享密钥加密)。 + (c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。 `浏览器验证 -> 随机密码 服务器的公钥加密 -> 通信的密钥 通信的密钥 -> 服务器` +4. 网站接收浏览器发来的数据之后要做以下的操作: + (a). 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。 + (b). 使用密码加密一段握手消息,发送给浏览器。 + `服务器用自己的私钥解出随机密码 -> 用密码解密握手消息(共享密钥通信)-> 验证HASH与浏览器是否一致(验证浏览器)` + HTTPS的不足 +5. 加密解密过程复杂,导致访问速度慢 +6. 加密需要认向证机构付费 +7. 整个页面的请求都要使用HTTPS \ No newline at end of file diff --git "a/\345\220\264\344\277\212\346\230\216/20240411\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240411\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..d9f97d12feb4d2ca0a7fbcab887ef2edb88fd4b0 --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240411\347\254\224\350\256\260.md" @@ -0,0 +1,23 @@ +一、计算机网络概述 + + +1.1 计算机网络的分类 +按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN); +按照网络使用者:公用网络、专用网络。 + +1.2 计算机网络的层次结构 + + +TCP/IP四层模型与OSI体系结构对比: + + + +1.3 层次结构设计的基本原则 +各层之间是相互独立的; +每一层需要有足够的灵活性; +各层之间完全解耦。 + +1.4 计算机网络的性能指标 +速率:bps=bit/s +时延:发送时延、传播时延、排队时延、处理时延 +往返时间RTT:数据报文在端到端通信中的来回一次的时间。 \ No newline at end of file diff --git "a/\345\220\264\344\277\212\346\230\216/20240412\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240412\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..8079a422f0ef32b2cb61efb42dfc929fa7950a5a --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240412\347\254\224\350\256\260.md" @@ -0,0 +1,5 @@ +Cisco Packet Tracer 是由[Cisco](https://baike.baidu.com/item/Cisco/0?fromModule=lemma_inlink)公司发布的一个辅助[学习工具](https://baike.baidu.com/item/学习工具/6424496?fromModule=lemma_inlink),为学习思科[网络课程](https://baike.baidu.com/item/网络课程/1265503?fromModule=lemma_inlink)的初学者去设计、配置、排除[网络故障](https://baike.baidu.com/item/网络故障/1391028?fromModule=lemma_inlink)提供了网络模拟环境。用户可以在软件的[图形用户界面](https://baike.baidu.com/item/图形用户界面/3352324?fromModule=lemma_inlink)上直接使用拖曳方法建立[网络拓扑](https://baike.baidu.com/item/网络拓扑/4804125?fromModule=lemma_inlink),并可提供[数据包](https://baike.baidu.com/item/数据包/489739?fromModule=lemma_inlink)在网络中行进的详细[处理过程](https://baike.baidu.com/item/处理过程/53549100?fromModule=lemma_inlink),观察网络实时运行情况。可以学习[IOS](https://baike.baidu.com/item/IOS/0?fromModule=lemma_inlink)的配置、锻炼故障排查能力。 [1] + +Packet Tracer是一个功能强大的网络仿真程序,允许学生实验与网络行为,问“如果”的问题。随着[网络技术学院](https://baike.baidu.com/item/网络技术学院/17185456?fromModule=lemma_inlink)的全面的学习经验的一个组成部分,包示踪提供的仿真,可视化,编辑,评估,和协作能力,有利于教学和复杂的技术概念的学习。 + +Packet Tracer补充[物理设备](https://baike.baidu.com/item/物理设备/2692368?fromModule=lemma_inlink)在课堂上允许学生用的设备,一个几乎无限数量的创建网络鼓励实践,发现,和[故障排除](https://baike.baidu.com/item/故障排除/1202971?fromModule=lemma_inlink)。基于仿真的[学习环境](https://baike.baidu.com/item/学习环境/3449654?fromModule=lemma_inlink),帮助学生发展如决策第二十一世纪技能,创造性和[批判性思维](https://baike.baidu.com/item/批判性思维/9901754?fromModule=lemma_inlink),解决问题。Packet Tracer补充的[网络学院](https://baike.baidu.com/item/网络学院/797241?fromModule=lemma_inlink)的课程,使教师易教,表现出复杂的技术概念和[网络系统](https://baike.baidu.com/item/网络系统/12712867?fromModule=lemma_inlink)的设计。 \ No newline at end of file diff --git "a/\345\220\264\344\277\212\346\230\216/20240415\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240415\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..5ceaafebc22344114a2036e666eea65d6fa23c2d --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240415\347\254\224\350\256\260.md" @@ -0,0 +1,23 @@ +### 交换机的基础配置与管理 + +用户模式:Switch> + +enable:从用户模式进入特权模式 Switch# + +conf t:从特权模式进入全局配置模式 Switch(config)# + +int f0/1:进入端口模式 + +exit:返回上级模式 + +?:帮助命令 + +[tab]键:自动补全命令 例:en[tab] > enable + +``` +出现:Translating "conft"...domain server (255.255.255.255) +// 解决方法 + 1.在Switch(config)#:no ip domain-lookup //关闭自动域名解析 + 2.键盘ctrl+shift+6 中断自动域名解析 + 3.等它好 +``` \ No newline at end of file diff --git "a/\345\220\264\344\277\212\346\230\216/20240417\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240417\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..7e0c94f4c5c731a02a2331565154e2d9a0c5a76d --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240417\347\254\224\350\256\260.md" @@ -0,0 +1,23 @@ +enable password 123 + +- 在全局配置模式下设置进入特权模式的明文密码 + +enable secret 456 + +- 在全局配置模式下设置进入特权模式的密文密码 + +line vty 0 + +- 进入编号为0的vty线路配置模式 + +write memory + +- 保存当前配置到内存 + +show running-config + +- 查看当前配置信息 + +no shutdown + +- 打开端口 \ No newline at end of file diff --git "a/\345\220\264\344\277\212\346\230\216/20240418\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240418\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..d32f4e618e21112cc7f9f17bd378001edc48327f --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240418\347\254\224\350\256\260.md" @@ -0,0 +1,24 @@ +### SSH配置登入 + +- 基本配置 + - Switch>en + - Switch# conf t + - Switch(config)# hostname sw1 + - sw1(config)# interface vlan 1 + - sw1(config-if)# ip address 192.168.75.5 255.255.255.0 //为vlan 1 配置管理ip地址 + - sw1(config-if)# no shutdown //启用vlan 1 + - sw1(config-if)# exit +- 设置域名 +- sw1(config)# ip domain-name abc.com +- 生成密钥 + - sw1(config)# crypto key generate rsa //生成密钥 + - How many bits in the modulus [512]: 1024 //设置密钥位数,1024-2048 +- 启动ssh + - sw1(config)# ip ssh version 2 //启用v2版的ssh服务 + - sw1(config)# line vty 0 15 //进入虚拟终端管理线路 + - sw1(config-line)# transport input ssh //只允许ssh登录 + - sw1(config-line)# login local //使用本地数据库,要求口令验证 +- 配置用户名和密码 + - sw1(config)# username admin password admin +- 保存配置 + - sw1# write memory \ No newline at end of file diff --git "a/\345\220\264\344\277\212\346\230\216/20240419\347\254\224\350\256\260.md" "b/\345\220\264\344\277\212\346\230\216/20240419\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..7c3666acf57a92b3835f2d4823535c66f7c38e7e --- /dev/null +++ "b/\345\220\264\344\277\212\346\230\216/20240419\347\254\224\350\256\260.md" @@ -0,0 +1,23 @@ +### 交换机划分VLAN + +- sw1(config)#vlan 2 //添加新的虚拟端口 +- sw1(config-vlan)#name v2 //设置虚拟端口名称 +- sw1(config)#vlan 3 +- sw1(config-vlan)#name v3 +- sw1(config)#int f0/1 //进入f0/1端口 +- sw1(config-if)#swi acc vlan 2 //将f0/1端口绑定到vlan2 +- sw1(config)#int f0/2 //进入f0/2端口 +- sw1(config-if)#swi acc vlan 3 //将f0/2端口绑定到vlan3 +- sw1(config)#int f0/24 //进入f0/24端口 +- sw1(config-if)#switch mode trunk //将连接模式改为trunk + +此时连接f0/1端口的pc1和连接f0/2端口的pc2 Ping不通,说明划分vlan成功 + +- sw1# show vlan bried + - 显示vlan配置信息 +- sw1# show vtp status + - 查看vtp配置信息 +- sw1(config)# vtp domain vtp0 + - 设置vtp域名vtp0 +- sw1(config)# vtp mode server + - 将交换机配置为VTP服务器 \ No newline at end of file