基础网络知识(代码片段)

guge-94 guge-94     2023-03-14     320

关键词:

网路通信模式

单播

原理
  一对一进行数据通信,在确认对方身份的情况下,进行数据的通信;

优点
  服务器及时响应客户机的请求
  服务器针对每个客户不通的请求发送不通的数据,容易实现个性化服务。

缺点
  服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。
  现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的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.1126.255.255.2540000 0001 0000 0000 0000 0000 0000 00010111 1111 1110 1111 1111 1111 1111 1110),注意127.x.x.x不能用。
B类地址:128.0.0.1191.255.255.2541000 0000 0000 0000 0000 0000 0000 00011011 1111 1111 1111 1111 1111 1111 1110),注意169.254.x.x被微软买断,用作用户获取不到IP时自动分配的IP地址。
C类地址:192.0.0.1223.255.255.2541100 0000 0000 0000 0000 0000 0000 00011101 1111 1111 1111 1111 1111 1111 1110)
D类地址:224.0.0.1239.255.255.2541110 0000 0000 0000 0000 0000 0000 00011110 1111 1111 1111 1111 1111 1111 1110)
E类地址:240.0.0.1255.255.255.2541111 0000 0000 0000 0000 0000 0000 00011111 1111 1111 1111 1111 1111 1111 1110

 

私有地址

A类地址:10.0.0.010.255.255.255
B类地址:172.16.0.0172.31.255.255
C类地址:192.168.0.0192.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

 

markdown基础知识(代码片段)

查看详情

markdownpostgresql基础知识(代码片段)

查看详情

pythonpython基础知识(代码片段)

查看详情

csscss基础知识(代码片段)

查看详情

sqlsql基础知识。(代码片段)

查看详情

rubyrails基础知识(代码片段)

查看详情

csscss:基础知识(代码片段)

查看详情

rsf基础知识(代码片段)

查看详情

markdowntensorflow基础知识(代码片段)

查看详情

markdownssh基础知识(代码片段)

查看详情

sqlmysql基础知识(代码片段)

查看详情

javascriptnpm基础知识(代码片段)

查看详情

markdownexcel基础知识(代码片段)

查看详情

htmlajax基础知识(代码片段)

查看详情

csharpc#基础知识(代码片段)

查看详情

javascriptjquery基础知识(代码片段)

查看详情

javascriptjquery基础知识(代码片段)

查看详情

markdownr基础知识(代码片段)

查看详情