• 基础网络知识


    网路通信模式

    单播

    原理
      一对一进行数据通信,在确认对方身份的情况下,进行数据的通信;
    
    优点
      服务器及时响应客户机的请求
      服务器针对每个客户不通的请求发送不通的数据,容易实现个性化服务。
    
    缺点
      服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。
      现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的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

     

  • 相关阅读:
    ACM/ICPC ZOJ1006-Do the Untwist 解题代码
    ACM/ICPC ZOJ1003-Crashing Balloon 解题代码
    数据结构(二)二叉搜索树-非递归实现遍历
    数据结构(一)二叉搜索树-递归实现
    Spark系列(三)SparkContext分析
    Docker系列(九)Kubernetes安装
    Docker系列(八)Kubernetes介绍
    Docker系列(七)Shipyard安装及介绍
    Docker系列(六)路由打通网络示例
    Esper系列(十四)Contained-Event Selection
  • 原文地址:https://www.cnblogs.com/guge-94/p/10709913.html
Copyright © 2020-2023  润新知