zoukankan      html  css  js  c++  java
  • 【2020Python修炼记】网络编程(一)网络通信协议

    【目录】

    一、C/S 架构 和 B/S 架构

    二、网络通信

    三、互联网通信协议——osi 七层协议(应表会传网数物)

    四、五层协议

    五,小结

    一、C/S 架构 和 B/S 架构

    1、C/S 架构——Client/Server

    Client<===========>Server

    客户端软件send                             服务端软件recv
    操作系统                                         操作系统
    计算机硬件<====物理介质=====>计算机硬件

    * 操作系统:(operating system,简称os)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。

    注:计算机(硬件)->os->应用软件 

    2、B/S 架构——Browser/Server

    Browser<===========>Server

    b/s架构也是c/s架构的一种

    二、网络通信

    网络存在的意义就是跨地域数据传输,称之为通信
    网络=物理链接介质+互联网通信协议

    三、互联网通信协议——osi 七层协议(巧记—应表会传网数物)

    1、互联网的本质就是一系列的网络协议

    * 英语成为世界上所有人通信的统一标准,如果把计算机看成分布于世界各地的人,

    那么连接两台计算机之间的internet实际上就是 一系列统一的标准,这些标准称之为互联网协议

    * 互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite)

    * 互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。

    2、osi七层协议——用层,示层,话层输层,络层,据链路层,理层 —(巧记—应表会传网数物)

    1)互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

     

    2)每层运行常见物理设备

     

    3)osi七层协议数据传输的封包与解包过程

    四、五层协议

     1、五层协议的组成——应用层、传输层、网络层、数据链路层、物理层

    计算机1:                 计算机2:

    应用层                   应用层
    传输层                   传输层
    网络层                   网络层
    数据链路层                 数据链路层
    物理层 <===========交互机===========> 物理层
                                  0101010101010

    (源mac地址,目标mac地址)(源ip地址,目标ip地址)数据

    2、物理层:负责发送电信号

                                    

    1)物理层由来:上面提到,孤立的计算机之间要想一起玩,就必须接入internet,言外之意就是计算机之间必须完成组网

    2)物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0

    3)一组物理层数据称之为:位
         单纯的电信号毫无意义,必须对其进行分组


    3、数据链路层:ethernet 以太网协议

    1)数据链路层由来:

    单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思

    2)数据链路层的功能:

    定义了电信号的分组方式

    3)以太网协议:

    早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet:

    规定1:一组电信号构成一个数据包,叫做‘帧’一组数据称之为一个数据帧

    规定2:数据帧分成两部分=》报头head+数据data两部分

    头包含:源地址与目标地址,该地址是mac地址

    数据包含:包含的是网络层发过来的整体的内容

           head

                           data                             

       head包含:(固定18个字节)

    • 发送者/源地址,6个字节

    • 接收者/目标地址,6个字节

    • 数据类型,6个字节

    data包含:(最短46字节,最长1500字节)

    • 数据包的具体内容

    head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

    规定3:规定但凡接入互联网的主机必须有一块网卡,每块网卡在出厂时都烧制好一个全世界独一无二的地址,

                  该地址称之为mac地址。

    4)mac地址 

    head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址 。

    mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

    5)广播

    计算机通信基本靠吼,即以太网协议的工作方式是广播。

     有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)

    ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼。

     

    4、 网络层:IP协议

    1)IP协议

    要达到的目的:
    划分广播域
    每一个广播域但凡要接通外部,一定要有一个网关帮内部的计算机转发包到公网
    网关与外界通信走的是路由协议

    规定1:一组数据称之为一个数据包
    规定2:数据帧分成两部分=》头+数据
    头包含:源地址与目标地址,该地址是IP地址
    数据包含的:传输层发过来的整体的内容

    2)IP地址和子网掩码

    ipv4地址:
    8bit.8bit.8bit.8bit

    0.0.0.0
    255.255.255.255

    子网掩码:
    8bit.8bit.8bit.8bit

    255.255.255.0对应的二进制表达

    11111111.11111111.11111111.00000000

    一个合法的ipv4地址组成部分=ip地址/子网掩码地址
    172.16.10.1/255.255.255.0
    172.16.10.1/24


    计算机1:
    172.16.10.1: 10101100.00010000.00001010.000000001
    255255.255.255.0: 11111111.11111111.11111111.000000000
    172.16.10.0: 10101100.00010000.00001010.000000000


    计算机2:
    172.16.10.2: 10101100.00010000.00001010.000000010
    255.255.255.255.0: 11111111.11111111.11111111.000000000
    172.16.10.0: 10101100.00010000.00001010.000000000

    计算机1:                计算机2:

    应用层                  应用层
    传输层                  传输层
    网络层                  网络层
    数据链路层                数据链路层
    物理层 <=========二层交互机========> 物理层
     0101010101010

    (源mac地址,xxxx)(源ip地址,目标ip地址)数据
    (源mac地址,网关的mac地址)(172.16.10.10/24,101.100.200.11/10)数据

     

    *事先知道的是对方的ip地址
    但是计算机的底层通信是基于ethernet以太网协议的mac地址通信

    3)ARP协议

    【ARP协议】:
    所以必须能够将ip地址解析成mac地址

    * arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我们了解到,通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议。

    * arp协议功能:广播的方式发送数据包,获取目标主机的mac地址

      4)计算机在同一局域网以及不同局域网内的通信方式

    # 两台计算机在同一个局域网内
    计算机1:172.16.10.10/24    ——   直接  ——   计算机2:172.16.10.11/24
    ARP:
    自己的ip,对方的ip
    1、计算二者网络地址,如果一样,拿到计算机2的mac地址就可以了
    2、发送广播包
    发送端mac FF:FF:FF:FF:FF:FF 172.16.10.10/24 172.16.10.11/24 数据

    # 两台计算机不在同一个局域网内

    计算机1:172.16.10.10/24  ——  网关 ——   计算机2:101.100.200.11/10
    ARP:
    自己的ip,对方的ip
    1、计算机二者网络地址,如果不一样,应该拿到网关的mac地址
    2、发送广播包
    发送端mac FF:FF:FF:FF:FF:FF 172.16.10.10/24 172.16.10.1/24 数据

    5、传输层——tcp协议、udp协议

    1)传输层的由来:

    网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。

    2)传输层功能:

    建立端口到端口的通信

    补充:端口范围0-65535,0-1023为系统占用端口

    3)tcp协议:

    可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,

    通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

    以太网头

    ip 头              

    tcp头              

    数据                                                    

     

    4)udp协议:

    不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

    以太网头

    ip头                 

        udp头                           

    数据                                           

     

    5)tcp报文

                                

    6)tcp三次握手和四次挥手

                                         

    tcp三次握手详解:

     

    6、应用层

    1)应用层由来:

    用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,

    数据多种多样,必须规定好数据的组织形式 

    2)应用层功能

    应用层功能:规定应用程序的数据格式。

    例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。

     

    五、小结

    1、总结图

              

    2、数据传输动图

                                

    参考资料:

    https://zhuanlan.zhihu.com/p/110296719

    https://www.cnblogs.com/linhaifeng/articles/6129246.html

    https://www.cnblogs.com/linhaifeng/articles/5937962.html

  • 相关阅读:
    《Microsoft Sql server 2008 Internals》读书笔记第十一章DBCC Internals(2)
    《Microsoft Sql server 2008 Internals》读书笔记第十一章DBCC Internals(9)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(10)
    CKEditor在asp.net环境下的使用一例
    《Microsoft Sql server 2008 Internals》读书笔记第五章Table(7)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(11)
    千万数据的连续ID表,快速读取其中指定的某1000条数据?
    javascript中的float运算精度
    .Net与Java的互操作(.NET StockTrader微软官方示例应用程序)
    《Microsoft Sql server 2008 Internals》读书笔记第十一章DBCC Internals(6)
  • 原文地址:https://www.cnblogs.com/bigorangecc/p/12711056.html
Copyright © 2011-2022 走看看