基础网络知识
Posted guge-94
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础网络知识相关的知识,希望对你有一定的参考价值。
网路通信模式
单播
原理
一对一进行数据通信,在确认对方身份的情况下,进行数据的通信;
优点
服务器及时响应客户机的请求
服务器针对每个客户不通的请求发送不通的数据,容易实现个性化服务。
缺点
服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。
现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的5%。如果全部使用单播协议,将造成网络主干不堪重负。现在的P2P应用就已经使主干经常阻塞,只要有5%的客户在全速使用网络,其他人就不要玩了。而将主干扩展20倍几乎是不可能。
广播
原理
一对多进行数据通信,一个主机通过广播的形式对所有的机器进行呼叫,进行地址的确认
优点
网络设备简单,维护简单,布网成本低廉
由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。
缺点
无法针对每个客户的要求和时间及时提供个性化服务。
广播禁止在Internet宽带网上传输。
网络允许服务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。例如有线电视的客户端的线路支持100个频道(如果采用数字压缩技术,理论上可以提供500个频道),即使服务商有更大的财力配置更多的发送设备、改成光纤主干,也无法超过此极限。也就是说无法向众多客户提供更多样化、更加个性化的服务。
组播
原理 一对一组进行数据通信,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。 优点 需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。 由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个(268435456)组播,所以其提供的服务可以非常丰富。 此协议和单播协议一样允许在Internet宽带网上传输。 缺点 与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。 现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。
参考地址:https://blog.csdn.net/woshihongq/article/details/81482276
网络通信规则
单工
单工数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送信息,不能实现双向通信,举例:电视,广播。
双工
双工又叫全双工,数据通信时允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信,举例:电话通信。
半双工
半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:对讲机。
注:网卡的全双工(Full Duplex)是指网卡在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音.目前的网卡一般都支持全双工.
地址范围
地址分类
A类地址:1.0.0.1~126.255.255.254(0000 0001 0000 0000 0000 0000 0000 0001 ~0111 1111 1110 1111 1111 1111 1111 1110),注意127.x.x.x不能用。 B类地址:128.0.0.1~191.255.255.254(1000 0000 0000 0000 0000 0000 0000 0001 ~1011 1111 1111 1111 1111 1111 1111 1110),注意169.254.x.x被微软买断,用作用户获取不到IP时自动分配的IP地址。 C类地址:192.0.0.1~223.255.255.254(1100 0000 0000 0000 0000 0000 0000 0001 ~1101 1111 1111 1111 1111 1111 1111 1110) D类地址:224.0.0.1~239.255.255.254(1110 0000 0000 0000 0000 0000 0000 0001 ~1110 1111 1111 1111 1111 1111 1111 1110) E类地址:240.0.0.1~255.255.255.254(1111 0000 0000 0000 0000 0000 0000 0001 ~1111 1111 1111 1111 1111 1111 1111 1110)
私有地址
A类地址:10.0.0.0~10.255.255.255 B类地址:172.16.0.0~172.31.255.255 C类地址:192.168.0.0~192.168.255.255
特殊地址
本地广播:255.255.255.255 网络广播:192.168.1.255 本地回环:127.0.0.1
子网掩码
子网掩码又叫网络掩码、地址掩码、子网络遮罩,主要功能是通过子网掩码与主机地址进行‘与运算‘,从而确认主机身份的计算方式 子网掩码是一个32位的地址,用二进制‘1‘来表示主机位,用二进制‘0‘来表示网络位;全0表示某一个网段,全1表示该网段中的广播地址;如:192.168.1.255表示192.168.1.0/24网段中的广播地址 根据子网掩码的主机位,决定地址范围
OSI七层模型
七层模型,亦称OSI(Open System Interconnection)参考模型,是参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。
应用层:网络服务与最终用户的一个接口。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示层:数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、DECOIC、加密格式等
会话层:建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话
传输层:定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理层:建立、维护、断开物理连接。
TCP与UDP协议
基本区别
TCP面向连接,UDP不需要连接,即发送数据之前不需要建立连接
TCP提供可靠的传输服务,UDP提供快速的传输
TCP对系统资源要求较多,UDP对系统资源要求较少
编程步骤
TCP服务端的编程步骤如下:
创建一个socket
设置socket属性
绑定IP地址、端口等信息到socket上
开启监听
接收客户端上来的连接
收发数据
关闭网络连接
关闭监听
TCP客户端的编程步骤如下:
创建一个socket
设置socket属性
绑定IP地址、端口等信息到socket上
设置要连接的对方的IP地址和端口等属性;
连接服务器
收发数据
关闭网络连接;
UDP服务端的编程步骤如下:
创建一个socket
设置socket属性
绑定IP地址、端口等信息到socket上
循环接收数据
关闭网络连接;
UDP客户端的编程步骤如下:
创建一个socket
设置socket属性
绑定IP地址、端口等信息到socket上
设置对方的IP地址和端口等属性;
发送数据
关闭网络连接;
TCP三次握手
第一次握手(SYN=1, seq=x): 客户端发送一个 TCP 的 SYN 标志位置1的包,指明客户端打算连接的服务器的端口,以及初始序号 X,保存在包头的序列号(Sequence Number)字段里。发送完毕后,客户端进入 SYN_SEND 状态。 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1): 服务器发回确认包(ACK)应答。即 SYN 标志位和 ACK 标志位均为1。服务器端选择自己 ISN 序列号,放到 Seq 域里,同时将确认序号(Acknowledgement Number)设置为客户的 ISN 加1,即X+1。 发送完毕后,服务器端进入 SYN_RCVD 状态。 第三次握手(ACK=1,ACKnum=y+1) 客户端再次发送确认包(ACK),SYN 标志位为0,ACK 标志位为1,并且把服务器发来 ACK 的序号字段+1,放在确定字段中发送给对方,并且在数据段放写ISN的+1发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态,TCP 握手结束。
四次挥手
第一次挥手(FIN=1,seq=x) 假设客户端想要关闭连接,客户端发送一个 FIN 标志位置为1的包,表示自己已经没有数据可以发送了,但是仍然可以接受数据。发送完毕后,客户端进入 FIN_WAIT_1 状态。 第二次挥手(ACK=1,ACKnum=x+1) 服务器端确认客户端的 FIN 包,发送一个确认包,表明自己接受到了客户端关闭连接的请求,但还没有准备好关闭连接。发送完毕后,服务器端进入 CLOSE_WAIT 状态,客户端接收到这个确认包之后,进入 FIN_WAIT_2 状态,等待服务器端关闭连接。 第三次挥手(FIN=1,seq=y) 服务器端准备好关闭连接时,向客户端发送结束连接请求,FIN 置为1。发送完毕后,服务器端进入 LAST_ACK 状态,等待来自客户端的最后一个ACK。 第四次挥手(ACK=1,ACKnum=y+1) 客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT状态,等待可能出现的要求重传的 ACK 包。服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。客户端等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。
参考文档:https://hit-alibaba.github.io/interview/basic/network/TCP.html
以上是关于基础网络知识的主要内容,如果未能解决你的问题,请参考以下文章
[vscode]--HTML代码片段(基础版,reactvuejquery)