网络编程

网络编程

1、软件开发架构

1、C/S架构:建立在局域网的基础上,需要安装客户端才能使用

​ Client:客户端,比如QQ、微信等客户端

​ Server:服务端

优点:软件的使用稳定,节省网络资源

缺点:安装麻烦,用户体验差,软件每次更新,用户都需要重新下载或更新版本

2、B/S架构:即浏览器和服务器架构模式,比如手机微信小程序,不需要下载客户端使用

​ Browser(本质上也是一个客户端):浏览器

​ Server:服务端

优点:软件的使用方便,用户体现高,无需跟着软件的更新去下载(比较流行的架构)

缺点:如果网络不稳定,使用就不稳定

客户端与服务端

服务端:24小时不间断提供服务

客户端:客户想要找服务时才会访问服务端

2、互联网协议(OSI七层协议)

计算机与计算机之间沟通的介质——互联网协议,让所有的厂商生产的电脑都遵循这套协议,实现所有的电脑之间无障碍通信,“互联网协议”是计算机界的中文,英文等

OSI七层协议

  1. 应用层
  2. 会话层
  3. 表示层
  4. 传输层
  5. 网络层
  6. 数据链路层
  7. 物理层

编写程序需要关注5层:(由下往上记)

  1. 应用层
  2. 传输层
  3. 网络层
  4. 数据链路层
  5. 物理层

1、物理层

获取到对象计算机的电信号数据

无法获取具体数据内容,需要将电信号数据(数据包)扔给数据链路层

2、数据链路层

以太网协议:

  1. 规定一套分组的方式,来获取电信号的真实数据(数据包)

    以太网协议由head和data组成

    ​ head由18个字节组成,前6位是发送者,中间6位是接收者,后6位是数据类型

    ​ data是电信号的具体数据

  2. 每一台电脑都必须要有一个网卡(一个硬件,在电脑插入网线的地方)

    每一台电脑网卡都有一个独一无二的一串数字:12位16进制的数字,称为“Mac地址”

    mac地址:前六位是厂商号,后六位是流水号

    mac地址作用:标识全世界上独一无二的计算机

以太网协议的工作方式:单播和广播

缺点:1、广播风暴;2、只能在局域网内实现通信,无法跨局域网实现通信

因此为了实现全世界的计算机之间的通信有网络层

3、网络层

为了实现全世界的电脑之间通信

IP地址(IP协议):由点分十进制的数字组成

IPV4:最小范围:0.0.0.0

​ 最大范围:255.255.255.255

IP的版本:IPV4和IPV6,IPV4数量用完后相应出现IPV6

IP的作用:用于标识全世界某一台计算机的位置,局域网的位置

IP地址+mac地址:标识全世界某一个局域网内的,某一台计算机

arp协议:将IP地址与Mac地址绑定到一起了,所有可以通过IP地址找到Mac地址

4、传输层

tcp与udp都是基于“端口”实现通信,有TCP协议和UDP协议

主要是软件与软件之间的通信

port端口:用于标识计算机中某一个独一无二的软件

​ 注意:

​ 0—1024:禁止使用,操作系统在使用

​ 使用8000以上的端口数

软件固定的端口号(不要碰): django: 8000 mysql: 3306 redis: 6379 flask: 5000 tomcat: 8080 mongodb: 27017

mac地址+IP地址+port端口:标识的是全世界范围内某一个局域网内某一台计算机的某一个软件

5、应用层

大佬们制定好的一套协议

http协议

ftp协议

自定义的协议

数据的传输是先从应用层到物理层进行包装,后传递给另一台计算机解包是从物理层到应用层提取到数据

3、TCP协议

TCP协议:建立客户端与服务端之间的双向通道
标记位含义:
ACK:确认序号有效。
SYN:发起一个新连接。
FIN:释放一个连接。

三次握手,建连接:

  1. 客户端向服务端发送请求建立连接(通道1,C—>S)
  2. 服务端返回收到给客户端,并向客户端发送请求建立连接(通道2,S—>C)
  3. 客户端返回收到给服务端,建立双向连接

反馈机制:

客户端往服务端发送请求,服务端必须有回应,一次请求必须要有一次响应

缺点:

​ 洪水攻击:伪造大量的请求,往对方服务端发送,导致服务端响应跟不上,以至于瘫痪

防止洪水攻击:1. Linux系统有一个参数可以限制。 2. 半连接池listen,限制用户在同一个时间段内的访问数量

四次挥手,断开连接:

  1. 客户端向服务端发送请求断开连接(通道1,C—>S)
  2. 服务端返回收到给客户端
  3. 服务端确认所有数据接收完成以后,发送断开连接给客户端
  4. 客户端返回收到给服务端,断开连接(通道2,S—>C)

4、UDP协议

称为数据包协议

特点:

  1. 不需要建立连接
  2. 不需要知道对方是否收到
  3. 数据不安全
  4. 传输速度快
  5. 能支持并发
  6. 不会粘包
  7. 无需先启动服务端再启动客户端

TCP协议与UDP协议的区别:

TCP协议:

​ 优点:数据安全

​ 缺点:传输速度慢,粘包

UDP协议:

优点:

  1. 传输速度快
  2. 能支持并发
  3. 不会粘包

缺点:数据不安全,容易丢失

posted @   Mr沈  阅读(242)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示

目录