python之路28 网络编程基础之OSI七层协议模型
阅读原文时间:2023年07月08日阅读:1

OSI七层协议

"""
七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。
它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。
"""

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

每层运行常见物理设备

OSI七层协议数据传输的封包与解包过程

物理层(Physical Layer)

主要用于确保计算机之间的物理连接介质 接收数据(bytes类型、二进制)

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

传输介质(有线、无线)

有线:同轴电缆、双绞线、光纤
    同轴电缆:分为细缆和粗缆
     细缆:传输速度10Mbps,传输距离185m
     粗缆:传输速度10Mbps,传输距离500m
    双绞线(RJ-45):
        分为屏蔽(STP)和非屏蔽(UTP)—8根铜丝分4组,两两相绞(减小干扰)—传输距离100米
        568A线序:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕
        568B线序:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕 (是568A的3612线序,常用水晶头的线序)
      平行线:又称为直通线,线序相同。不同层设备使用平行线。
      交叉线:线序不同。同层设备使用交义线。
      全反线:又称为console线,配置线,线序相反,用于用户控制网络设备。
    光纤
      分为单模和多模,通过光导纤维(玻璃)传输光信号
     发送光信号需要由电信号转为光信号:
        电信号—>光信号:发光二极管(多模) 或 注入式激光二极管(单模)
        光信号—>电信号: 发电二极管

无线:  红外线、微波、蓝牙、无线电、wimax
    无线电:标准IEEE 802.11
    蓝牙:标准IEEE 802.15
    wimax:标准IEEE 802.16
    全球移动通信系统(GSM)
路由器:三层设备,识别IP地址。
    具有隔离广播域的功能,一个接口就是一个广播域,不同的接口在不同的网段(广播域)
交换机(网桥):二层设备,使用MAC地址,所有的接口默认在同一个广播域,一个接口是一一个冲突域。
集线器(hub):放大器 放大信号,属于1层设备,识别bit流,hub 上所有的接口都在同一个冲突域中。
数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思
数据链路层的功能:定义了电信号的分组方式

以太网协议

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

ethernet规定

  • 一组电信号构成一个数据包,叫做'帧'
  • 每一数据帧分成:报头head和数据data两部分

报头

数据

head

data

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

  • 发送者/源地址,6个字节
  • 接收者/目标地址,6个字节
  • 数据类型,6个字节

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

  • 数据包的具体内容

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

mac地址(物理地址)

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

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

该数字也称为:以太网地址/MAC地址

广播

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

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

网络层(Network Layer)

网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址

IP协议:规定了所有接入互联网的计算机都必须有一个IP地址 类似于身份证号
    mac地址是物理地址可以看成永远无法修改
    IP地址是动态分配的 不同的场所IP是不同的
    编址协议: IP(IPV4/IPV6)、IPX、apple talk、novell、NSAP
IPV4(32位二进制)编址方式:点分十进制法(0、1组成)

IPV6(128位二进制)编址方式:冒分十六进制法  地址比较多:能够给地球上每一粒沙分一个IP地址
完整IP地址:IP地址+子网掩码
IP地址:网络位+主机位(IPV4)
地址分类(A、B、C、D、E):
    A类地址:第一位固定为0
        0XXX XXXX---0-127(1-126),子网掩码默认为255.0.0.0
    B类地址:第一位固定为10
        10XX XXXX---128-191,子网掩码默认为255.255.0.0
    C类地址:第一位固定为110
        110X XXXX---192-223,子网掩码默认为255.255.255.0
    D类地址:第一位固定为1110
        1110 XXXX---224-239,子网掩码默认为255.255.255.255
    E类地址:第一位固定为1111
        1111 XXXX---240-255,科研地址
    特殊地址:
        1、0.X.X.X 无效地址(保留地址),0.0.0.0无效地址,用于占位
        2、127.0.0.1 回路地址,用于本地测试
        3、网络号,主机位全为0,用于描述一个网段
        4、255.255.255.255为受限广播地址
        5、主机位全为1,定向广播地址
        6、本地链路地址:link-local (169.254.0.0  255.255.00)

公有地址:具有全球唯一性标识地址
私有地址:不具唯一标识地址
    10.0.0.0  255.255.0.0
    172.[16,31].0.0 255.255.0.0
    192.168.X(0,255).0 255.255.0.0
ARP协议:
arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到

通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议
arp协议功能:广播的方式发送数据包,获取目标主机的mac地址

cmd 界面输入ipconfig/all获取本地硬件地址

传输层(Transport Layer)

传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。

传输层的功能是它提供了端口号码的概念(port)
作用: 1.区分流量   2.定义数据传输方式 (可靠传输TCP、不可靠传输UDP)
PORT协议(端口协议)
    用来标识一台计算机上面的某一个应用程序
    范围:0-65535
     特征:动态分配

       0-1024   系统默认需要使用
       1024-8000   常见软件的端口号
       8000之后的
常见端口号(<256):
    21端口号:FTP 文件传输服务
    22端口号:SSH 远程登录(安全性较高 加密认证)- TCP
    23端口:Telnet 远程登录服务  TCP
    25端口:SMTP 简单邮件传输服务
    53端口:DNS 域名解析服务  TCP和UDP
    80端口:HTTP 超文本传输协议  TCP
    110端口:POP3 “邮局协议版本”使用的端口
    443端口:HTTPS 加密的超文本传输协议  TCP
    520端口:RIP   UDP

TCP(transmission control protocol –传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据)
三次握手建链接
    1.TCP协议也称为可靠协议(数据不容易丢失)
       造成数据不容易丢失的原因不是因为有双向通道 而是因为有反馈机制
       给对方发消息之后会保留一个副本 直到对方回应消息收到了才会删除
    否则会在一定的时间内反复发送
    2.洪水攻击
      同一时间有大量的客户端请求建立连接 会导致服务端一致处于SYN_RCVD状态
    3.服务端如何区分客户端建立链接的请求
      可以对请求做唯一标识
四次挥手断链接
    1.四次不能合并为三次
        因为中间需要确认消息是否发完(TIME_WAIT)
UDP(user datagram protocol–用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
    也称之为数据报协议、不可靠协议
    早期的QQ使用的是纯生的(没有加任何额外功能)UDP协议
    现在的QQ自己添加了很多技术和功能
    使用UDP的原因是因为很简单、快捷、粗暴、只要指定对方的地址就可以发消息了
"""
URL:统一资源定位符(网址)
    网址本质是有IP和PORT组成的!!!
IP+PORT:能够定位全世界独一无二的一台计算机上面的某一个应用程序

域名解析:将网址解析成IP+PORT
IP:PORT  实际使用冒号连接
    114.55.205.139:80
"""

七层模型所用到的协议

tcp报文

tcp三次握手建链接和四次挥手断链接

会话层(Session Layer)

计算机收到了发送的数据,但是有那么多进程,具体哪个进程需要用到这个数据,则把他输送到那个进程。例如:如果80端口要用,所以系统内数据通信,将接收端口数据送至需求端口。

作用:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路

建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话

表示层(Presentation Layer)

现在正确接收到了需要的数据,但是因为数据在传输过程中可能基于安全性,或者是算法上的压缩,还有就是网络类型不同。那就得有一个沟通的桥梁来整理整理,还原出原本应该有的表示,类似于一个拆快递的过程。
作用:数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)

也负责数据加密。其提供了四种常见的加密方式。
(1)对称加密: 加密方与解密方使用相同的密钥
(2)非对称加密:一把私钥、N种公钥
(3)HASH 256加密
(4)光密

应用层(Application Layer)

是其他层对用户的已经封装好的接口,提供多种服务,用户只需操作应用层就可以得到服务内容,这样封装可以让更多的人能使用它

应用层功能:规定应用程序的数据格式。
应用层是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)

主要负责对软件提供接口以使程序能使用网络服务。术语“应用层”并不是指运行在网络上的某个特别应用程序 ,应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。