python之路28 网络编程基础之OSI七层协议模型
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 上所有的接口都在同一个冲突域中。
数据链路层(Datalink Layer)
数据链路层由来:单纯的电信号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)
主要负责对软件提供接口以使程序能使用网络服务。术语“应用层”并不是指运行在网络上的某个特别应用程序 ,应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。