zoukankan      html  css  js  c++  java
  • day27

    网络通讯协议

     

    什么是互联网

      网:由多个节点相互连接组成  eg:渔网、蜘蛛网

      计算机互联网:由多台计算机通过某种介质相互连接而组成

             互联网之所以存在就是为了能让信息共享

    网络编程

      网络编程:指的是编写基于网络的应用程序

      学习网络编程的目的:开发出一款可以利用网络来传输数据的应用程序

                最终目的是就是要编写一个基于C/S结构的应用程序

    cs结构

      建立网络至少需要两台计算机,然后使用网络来传输数据

      1、网络必须联通

      2、在访问数据的一方,必须安装用于访问数据的应用程序

          该应用程序称之为客户端应用程序(client)

         在需要提供数据的一方,必须安装用于共享数据的应用程序

          该应用程序称之为服务端应用程序(server)

           简写为C/S:

          例如:qq   就是一个客户端   服务器在腾讯公司

    还有一个B/S    Browser浏览器/Server

      该结构下传输的数据都是HTML文本数据

    通讯必备的两个条件

      1、物理传播介质(双绞线  光纤  无线电波)

      2、通讯协议(掌握的重点)

    通讯协议

      是由发送方和接收方共同商定的一套规范

    #1、制定协议的目的

         为了通讯双方能够正确解析数据

         例如 国内通讯:双方都用普通话

            国际通讯:双方都用英语

    #2、OSI七层模型的由来

        早些年,一些生产电脑的厂商的设备都不兼容(无法通信),每个公司都有着自己的一套规范,

        只能自己设备之间互相能够通信

        于是国际标准组织就提供了一套开放系统互联模型  OSI  作为世界的互联网的统一标准

    OSI七层模型

      OSI七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

      经过人们长时间的磨合,发现可以把前三层统一归类为应用层

      五层模型:应用层、传输层、网络层、数据链路层、物理层

    物理层

      通过物理介质建立物理连接,可以发送10101001 的二进制数据

      但是单纯的二进制数据无法理解,必须明确一次性收几个,每一段二进制是什么含义

    数据链路层

    以太网(Ethernet)协议工作在数据链路层

    #1、数据如何分组(数据的格式)

      每次发送一个数据帧  每个数据帧包含  head和data

      head:18byte  data:46-1500byte

    head data

      

    head又包含目的地址、源地址

    目标MAC 源MAC 其他 data

      

    数据帧的最大长度为1518,如果数据长度超过将被分片

    #2、MAC地址

      每一台计算机想要联网就必须要具备网卡

      每个网卡必然具备一个全球唯一的MAC地址

      MAC地址可以定位到任意一台计算机,但是如果提前不清楚目标的MAC地址,

      那就需要广播,来确定网口和MAC地址的对应关系

    有了链路层  理论上全世界的计算机就能连到同一个网络了,但是我们不可能将所有计算机设备连接到同一个交换机上

    #3、广播风暴

      当很多同一网络中的计算机同时发送广播,就会形成广播风暴,交换机承受不住高负荷,导致网络瘫痪

    网络层

      ip协议工作在网络层 Internet Protocol Address

      ip协议规定  每一个计算机设备要联网,必须分配一个ip地址

      ip地址是一个逻辑地址  不是固定的,在家和在学校获得的ip地址就不一样

    #1、ip地址的格式

      由4段3位的十进制组成(点分十进制)

      0.0.0.0  -  255.255.255.255

      每个局域网第一个ip是网络地址(主机位是0)  最后一个ip是广播地址(主机位是255)

    #2、网络位与主机位

      ip地址分为两个部分,网络位与主机位

      网络位:主要用来表示所处的局域网地址

      主机位:主要用来表示你这台电脑的具体位置

      区分网络位与主机位主要通过子网掩码

      子网掩码:和ip地址的形式一样,子网掩码位1对应的就是网络位,0对应的就是主机位

    #3、ARP地址解析协议(了解)

      会根据你发的目标ip地址去找到对应目标的MAC地址,从而确保你的数据封包到数据链路层可以正常进行

    总结:

      ip地址分为网络号和主机号,通过网络号可以定位到某一个局域网,再通过主机号定位到某一个计算机

      这样一来就可以通过ip定位到全球任意一台计算机

    源MAC 目标MAC 源IP 目标IP data

       数据包

          

        以太头部        ip头部

    传输层

      TCP/UDP工作在这一层

      传输层要求每一个应用程序捆绑一个端口号

      端口号是一个整数  取值范围 0-65535  0-1023端口是系统保留的,不建议使用,其他都可以用

      至此  可以通过ip+端口号定位全球某一台计算机上的某一个应用程序

    TCP协议(传输控制协议)

      可靠传输协议:就是在发送完数据之后,必须等待接收方返回回复消息,该数据才算发送成功

      如果对方在一段时间内没有返回,就会再次发送数据,超限制次数,就判定连接丢失(超时)

      基于链接的传输:

        要发送数据必须先建立链接,简单来说就是找一条可以到达对方的路,

        如何选择最佳路径由路由协议来控制

    #1、建立连接需要三次握手:

        由于TCP要实现双向通信,为了防止单向通信的情况,A必须要确认B和自己同步,B也要确认A和自己同步

      三次握手成功之后就表示链接建立成功了,只能表示这三次数据传输是可靠的,并不能保障后续的传输数据的可靠

      TCP协议要求在发送数据后,必须接收到对方的回复信息才能确认数据成功发送,如果一段时间内没有收到

      回复信息,会自动重新发送,如果重试的次数多,则表示链接可能已经中断了

    #2、断开链接需要四次挥手:

      1、客户端先发送断开链接请求

      2、服务端确认请求,这样客户端到服务端的链接就中断了

      3、当服务器发完最后的数据后,就向客户端发送断开链接请求

      4、客户端确认断开信息,这样双向链接就全部断开了

      四次挥手的目的主要是保证双方的数据传输已经全部完成,同样是为了保障数据的完整性

    #3、优点:

      保证传输可靠,数据完整

    #4、缺点:

      因为需要传输确认信息,所以对网络消耗较大,效率相对较低

    #5、应用场景:

      重要的数据,在线支付

    UDP协议(用户数据报协议)

      不可靠传输,UDP只管发送,不管对方是否收到

    优点:

      传输效率比TCP高

    缺点:

      传输不可靠

    应用场景:

      对速度要求高,对完整性要求低的,例如对战游戏、视频通话

    应用层

  • 相关阅读:
    MySQL数据库的常用命令
    函数返回 局部变量问题
    几种网络I/O模型
    socket的select模型【摘】
    Linux Bash Shell入门教程【转载】
    Shell学习【转】
    unicode 2 utf8 [转]
    linux下多线程的创建与等待详解 【转载】
    运算(93&-8)的结果
    一道腾讯的面试题,关于a和&a
  • 原文地址:https://www.cnblogs.com/huikejie/p/10966101.html
Copyright © 2011-2022 走看看