zoukankan      html  css  js  c++  java
  • 网络编程之网络基础

    网络编程

    模式

    1. 单机模式

    2. C/S模式

      Clien客户端--->Service服务端

    3. B/S模式

      Browser浏览器--->Service服务端

    交换机

    冲突域:

    在图1中,主机A只是想要发送一个单播数据包给主机B。但由于传统共享式以太网的广播性质,接入到总线上的所有主机都将收到此单播数据包。同时,此时如果任何第二方,包括主机B也要发送数据到总线上都将冲突,导致双方数据发送失败。我们称连接在总线上的所有主机共同构成了一个冲突域。

    广播域:

    当主机A发送一个目标是所有主机的广播类型数据包时,总线上的所有主机都要接收该广播数据包,并检查广播数据包的内容,如果需要的话加以进一步的处理。我们称连接在总线上的所有主机共同构成了一个广播域。

    为什么要有交换机:

    为了实现多台主机之间相互通讯的需求,交换机可以实现隔离冲突域,但是无法实现隔离广播域

    交换机实现相互通讯的要求:

    1. 找到需要接受我信息的人,在一个交换网络中,需要通过广播实现

    2. 让接收人可以获悉接收的信息是发送给自己的,需要借助网络标识,即mac地址。mac地址是物理地址,mac地址全球唯一

    3. 当网络中发送的广播包过多时,也会影响网络中主机的性能,造成这种问题称为广播风暴。

      一个广播风暴的波及范围只在一个交换网络内部,即只在一个局域网中。

      在一个局域网中,所有的主机在一个广播域,一个交换机有多少个端口,就有多少个冲突域。

    交换机的作用:

    1. 在一个交换机的端口上所连接的所有终端设备,均在一个网段上(称为一个广播域)
    2. 并且一个网段会有一个统一的网络标识,会产生广播消耗设备CPU资源
    3. 交换机可以隔离冲突域,每一个端口就是一个冲突域
    4. 终端用户的设备接入
    5. 基本的安全功能
    6. 广播域的隔离(VLAN)

    路由器:

    为什么要有路由器

    隔离广播风暴,让不同的局域网中的主机可以实现通讯

    路由器所连局域网的接口称为网关接口,而在接口上配置的地址称为网关地址

    路由器实现互相通讯的要求

    1. 主机身份标识信息:局域网编码+主机编码=经过路由器的身份标识信息

      网段(网络地址) + 主机地址 = IP地址

    2. 数据转发到路由器,路由器根据内部的路由表进行判断,相应数据包从哪个接口转发出去

    路由表中只记录网段信息,不记录识别主机信息

    一旦路由表,没有所要去往的目的主机网段信息,就会提示传输不可达

    1. 路由表收敛

      多个路由器互联,路由表信息实现统一一致的过程称为“路由表收敛”,路由器彼此之间说悄悄话,实现路由收敛的方式称为 路由器协议

    2. 路由器协议

      实现了不同局域网中主机,跨越多台路由器实现主机间的通讯

    3. 路由协议主要涉及到两种

      • 一种称为静态路由器协议:需要手动的指明我要到达的目标网络,是通过路由器哪个接口对应连接的路由器到达(路由表收敛快)
      • 二种称为动态路由器协议:采用类似广播的方式,每台路由器都告知其他相连的路由器,我所连了哪些网络(配置操作简单--RIP OSPF EIGRP)

    路由器的作用:

    1. 隔离广播风暴,让不同的局域网中的主机可以实现通讯

    2. 路由器所连局域网的接口称为网关接口,而在接口上配置的地址称为网关地址

    3. 路由协议的转发(路由选路)

      a) 路由类似于现实生活中A地去往B地可能需要先步行,在坐车,在做飞机才能到达B地,这样的整个过程在网络中国对应的数据的传递过程就称为路由。因此一个数据信息跨越不同的网段传递到目的地址,就可以把传递数据的过程称为路由,也可看做每条传递数据的路径

    4. 数据转发,会维护一个路由表(相当于一个地图)

    5. 路由器会作为网关

      a) 一般会在网络出口的位置摆放一台路由器

    OSI(Open Systems Interconnection Reference Model)七层模型

    OSI的来源:

    OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。
    
    ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。
    

    osi七层模式的划分:

    OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。如下图。
    
    每一层实现各自的功能和协议,并完成与相邻层的接口通信。OSI的服务定义详细说明了各层所提供的服务。某一层的服务就是该层及其下各层的一种能力,它通过接口提供给更高一层。各层所提供的服务与这些服务是怎么实现的无关。
    

    各层功能定义:

    这里我们只对OSI各层进行功能上的大概阐述,不详细深究,因为每一层实际都是一个复杂的层。后面我也会根据个人方向展开部分层的深入学习。这里我们就大概了解一下。我们从最顶层——应用层 开始介绍。整个过程以公司A和公司B的一次商业报价单发送为例子进行讲解。

    1. 应用层

      OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。

       实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等  

    2. 表示层

      表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。

      由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。

    3. 会话层

      会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。

      会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息,然后将整份资料放进信封,并写上地址和联系方式。准备将资料寄出。等到确定公司B接收到此份报价单后,此次会话就算结束了,外联部的同事就会终止此次会话。

    4. 传输层

      传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”

      传输层就相当于公司中的负责快递邮件收发的人,公司自己的投递员,他们负责将上一层的要寄出的资料投递到快递公司或邮局。

    5. 网络层

      本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。

      网络层就相当于快递公司庞大的快递网络,全国不同的集散中心,比如说,从深圳发往北京的顺丰快递(陆运为例啊,空运好像直接就飞到北京了),首先要到顺丰的深圳集散中心,从深圳集散中心再送到武汉集散中心,从武汉集散中心再寄到北京顺义集散中心。这个每个集散中心,就相当于网络中的一个IP节点。

    6. 数据链路层

      将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。

      数据链路层又分为2个子层:

      • 逻辑链路控制子层(LLC),LLC子层定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC子层并非必需的。
      • 媒体访问控制子层(MAC),MAC子层处理CSMA/CD算法、数据出错校验、成帧等。
    7. 物理层

      实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。

      快递寄送过程中的交通工具,就相当于我们的物理层,例如汽车,火车,飞机,船。

    通信特点:对等通信

    对等通信,为了使数据分组从源传送到目的地,源端OSI模型的每一层都必须与目的端的对等层进行通信,这种通信方式称为对等层通信。在每一层通信过程中,使用本层自己协议进行通信。

    TCP、IP五层模型

    TCP/IP五层协议和OSI的七层协议对应关系如下。

    ​ 在每一层都工作着不同的设备,比如我们常用的交换机就工作在数据链路层的,一般的路由器是工作在网络层的

    在每一层实现的协议也各不同,即每一层的服务也不同.下图列出了每层主要的协议。其中每层中具体的协议,我会在后面的逐一学习。

    OSI模型网际互连:

    1. 需要了解数据包的封装和解封装过程

    2. 网际互连过程中

      • mac地址只在本地局域网有效,IP地址在不同网段间有效
      • 在不知道目标地址信息时,需要发送mac广播包FFFFFF,局域网中主机广播包全部接受

    什么是Scoket

    Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

    所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。

    注意:也有人将socket说成ip+port,ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序,ip地址是配置到网卡上的,而port是应用程序开启的,ip与port的绑定就标识了互联网中独一无二的一个应用程序,而程序的pid是同一台机器上不同进程或者线程的标识。

  • 相关阅读:
    netcore跨域问题与接口请求错误400
    JAVA基础
    Codeforces Round #738 (Div. 2) E.Mocha and Stars 容斥+DP
    Codeforces Round #737 (Div. 2) D. Ezzat and Grid DP+线段树优化
    牛客多校第四场 H.Convolution 数论 推式子
    51Nod-1514 美妙的序列 多项式求逆模板题
    牛客多校第4场 G.Product EGF解决排列问题
    上帝与集合的正确做法 拓展欧拉定理 欧拉函数性质
    [Codeforces Round #736 (Div. 2)](https://codeforces.com/contest/1549) E.F1 题解
    洛谷P7725 珍珠帝王蟹 分类讨论
  • 原文地址:https://www.cnblogs.com/plf-Jack/p/11084284.html
Copyright © 2011-2022 走看看