网络编程与OSI模型

一、网络编程简介

1.什么是网络编程

​ 基于网络编程代码,能够实现数据的远程交互

2.学习网络编程的目的

​ 能够开发cs架构的软件

3.网络编程的发展史

​ 网络编程起源于美国军事,主要是想实现远程数据传输
​ 而要想实现远程通信,第一个需要具备的条件就是:物理连接介质

4.网络编程必备条件

​ (1)数据的远程交互

​ 1)早期的电话 --> 依赖于电话线

​ 2)早期的电脑 --> 网线

​ 3)笔记本电脑、移动电话 --> 网卡

​ 综上,可以发现实现数据的远程交互必备的基础条件是物理连接介质

二、OSI七层协议模型简介

0.操作系统基础

​ 操作系统OS,是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行

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

1.osi七层协议模型

​ Orders Sources Identification Technology

(1) osi七层协议规定的内容概括

​ 1)所有的计算机在远程数据交互的时候必须经过相同的处理流程

​ 2)计算机在制造过程中必须拥有相同的功能硬件

(2)osi七层协议模型:应、表、会、传、网、数、物

​ 这个模型把网络通信的工作分为7层,分别物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

1至4层被认为是低层,这些层与数据移动密切相关

5至7层是高层,包含应用程序级的数据。每一层负责一项具体的工作,然后把数据传送到下一层

常见的是整合之后的tco/ip五层或者tco/ip四层

image-20221115102752706

(3)接收网络消息,数据由下往上传递;发送网络消息,数据由上往下传递

2.osi七层协议之物理层

​ 第1层是物理层(也即[OSI模型]中的第一层也是最底层),物理层实际上就是布线、光纤、网卡和其它用来把两台网络通信设备连接在一起的东西。

物理连接层主要用于确保计算机之间的物理连接介质 -->接收的数据都是二进制格式(在python中为bytes类型、二进制)

3.osi七层协议之数据链路层

​ 第2层是数据链路层,作用是将数据帧转换成而二进制位供1层处理。最重要的是我们应该理解网桥是什么,交换机可以看作是网桥,网桥仅关注以太网上的MAC地址。

数据链路层

​ 1)规定了电信号的分组方式

​ 2)以太网协议 :规定了计算机在出厂的时候都必须有一块网卡,网卡上有一串数字;该数字相当于上计算机的身份证号码是独一无二的;该数据的特征(以太网地址/MAC地址)是12位16进制数据(前六位产商编号,后六位流水线号码)

image-20221115105746130

4.osi七层协议之网络层

​ 第3层是网络层,网络层的作用就是选择合适的网间路由和交换结点, 确保数据及时传送,网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息-->源站点和目的站点地址的网络地址。有关路由的一切事情都在第3层处理。地址解析和路由是3层的重要目的。

(1)IP协议规定了所有接入互联网的计算机都必须有一个IP地址,类似于身份证号

MAC地址是物理地址,可以看成是永远无法修改的

IP地址是动态分配的,不同的局域网内IP地址是不同的

​ IP地址特征:可以跨局域网传输,可以用来标识接入互联网的计算机

IPV4:点分十进制

0.0.0.0 - 255.255.255.255

总共42个IP地址

IPV6:点分十六进制

image-20221115113906237

(2)ARP协议:即地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。其工作原理如下:ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出包头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

(3)路由协议:如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,然后再通过ARP获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。而完成这个路由协议的物理设备就是路由器,路由器扮演着交通枢纽的角色,它会根据信道情况,选择并设定路由,以最佳路径来转发数据包。

5.osi七层协议之传输层

​ 第4层是处理信息的传输层,第4层的数据单元也称作数据包(packets,第4层提供端对端的通信管理。

(1)PORT协议(端口协议)

​ 给应用程序分配端口号,通过端口号来标识一台计算机上面的某一个应用程序

​ 端口号的范围:0-65535

​ 端口号的特征:动态分配

​ 端口号建议:

​ 端口号:0-1023 系统默认需要使用
​ 端口号:1024-8000 常见软件的端口号

(2)URL:统一资源定位符

​ uniform resource locator

网址:本质是由IP和PORT组成的

IP+PORT:能够定位全世界独一无二的一台计算机上面的某一个应用程序

(3)域名解析:将网址解析成IP+PORT

​ IP:PORT ip地址:端口

​ 180.101.49.13:80 --> 百度的IP地址:百度的PORT端口

(4)TCP与UDP协议

​ TCP与UDP协议规定通信方式(数据交互的方式),彼此之间通信要有通信的通道,双方都必须能和对方发消息

1)TCP协议三次握手建链接,四次挥手断链接

可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

三次握手建链接

​ 1. TCP协议也称为可靠协议,数据不容易丢失,造成数据不容易丢失的原因不是因为有双向通道,根本原因是因为有反馈机制。

​ 2.反馈机制:TCP协议,在发送消息的过程中,会将消息复制一份副本,直到对方回应消息收到后反馈才会删除副本,否则会在一定时间内反复发送(反馈机制有时间限制,超过这个时间限制也会删除副本)。

​ 3.洪水攻击:同一时间有大量的客户端请求建立链接,会导致服务端一直处于SYNZ_RCVD状态(避免洪水攻击,可以在服务端前建立缓冲池,分流用户请求)

​ 4.服务端如何区分建立链接的请求:seq = x 表示不同的客户端请求的标识,区分不同的客户端请求

image-20221116153047578

步骤三和步骤四可以合并成一步,一起发送消息,即允许又请求

四次挥手断链接

​ 1.步骤2和步骤3不能合并为一步,因为中间需要确认消息是否发完(时间等待期TIME_WAIT)

image-20221116161758483

步骤2和步骤3是

image-20221116100213751

listen:监听态 SYN_RCVD:洪水攻击后的状态

TIME_WAIT:时间等待,确认消息是否发完

Seq 表示:序列号Sequence Number - SN

ACK表示:确认序列号Acknowledgment Number字段有意义

PSH表示:Push功能,RST表示复位TCP连接

SYN表示SYN报文(在建立TCP连接的时候使用)

FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)

2)UDP协议

不可靠协议,也称为数据报协议

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

早期的QQ使用的是纯生的UDP协议,现在的QQ自己添加了很多技术和功能

相对TCP更加简单、便捷,没有三次握手四次挥手洪水攻击等等

6.osi七层协议之应用层

应用层相当于是程序员自己写的应用程序,里面的协议非常多,常见的有HTTP、HTTPS、FTP等等等等

image-20221115161728596 img

三、网络相关专业名词

计算机之间想要实现数据集交互必须要‘连接’到一起

1.交换机

​ 能够将计算机互连在一起

2.广播

​ 首次查找接入同一个交换机的其他计算机,需要进行广播

3.单播

​ 首次被查找的计算机回应查找它的计算机,叫做单播

image-20221115110812479

4.广播风暴

​ 接入同一台交换机的多台计算机同时进行广播

5.局域网

​ 单个交换机组成的网络,可以看作是一个局域网;同一个局域网中的计算机,可以基于MAC地址作数据交互(不是一个局域网无法直接通过MAC地址访问)

6.广域网

​ 可以简单的理解为范围更大的局域网

7.互联网

​ 由所有的局域网、广域网连接到一起形成的网络

互联网 <-- 广域网 <-- 局域网

8.路由器

​ 不同的局域网之间是无法直接实现数据交互的,需要路由器连接并分配ip地址 (路由器可以实现不同局域网之间的数据交互)

路由器:常见路由器、基站(4G 5G网络)

9.网关Gateway

​ 网关(Gateway)又称网间连接器、协议转换器。

​ 网关在网络层以上实现网络互连,是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间。仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。

网关是一个翻译器,网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同层--应用层

image-20221115160436213
posted @ 2022-11-15 16:25  Duosg  阅读(72)  评论(0编辑  收藏  举报