网络编程
软件开发架构
网络编程:我们要基于网络来编写一款B/S或者C/S架构的软件,如之前的ATM都是没有接入网络的,是别人无法访问的。
目的:把系统基于网络传输,别人想用时就必须把客户端下载到本地电脑上,以登录为例,把用户名和密码在客户端输入,用户名和密码会传到服务端进行用户名和密码的验证,这就是基于网络开发出的软件。
C/S:指的是客户端和服务端 (客户端相当于用户,服务端相当于饭店的工作人员)
B/S:指的是浏览器和服务端(浏览器也称之为超级客户端,万能客户端)(浏览器相当于用户,服务端相当于饭店的工作人员)
客户端可以有多个,服务端只能有一个。本质上B/S架构也是C/S架构。
服务端要具备的特点:
1、24小时不间断对外提供服务。
2、服务端要有一个公网IP。(服务器也就是另一台计算器,需要去买,阿里云、腾讯云购买)
物理层
物理层: 基于电信号,它是用来发送高低频发送电信号,一组物理层数据称之为位。
单纯发送高低频无意义,需要对电频进行分组,但是物理层不能分组。
数据链路层(mac地址)
专门用来分组使用。
该层的数据一组称为一个数据帧。数据帧由两部分组成:head(报头)+data(真实数据)
head部分:
固定18个字节
○ 发送者/源地址,6个字节
○ 接收者/目标地址,6个字节
○ 数据类型,6个字节
data:
最短46字节
数据报的具体内容:head长度+data长度=最短64字节(头包括:源地址、目标地址,该地址是mac地址,数据包括:网络层整体内容)
该层使用的是以太网协议,以太网协议规定,任何接入互联网的计算机都应该有一个网卡,默认的就叫以太网。
Mac地址:每一个网卡都要有一个Mac地址,每块网卡出厂时都被烧制上一个世界唯一的Mac地址,长度为48位2进制,通常由12位16进制数表示。
Mac地址可以确定局域网中唯一一台计算机。
网络层(IP地址)
该协议规定接入互联网的计算机都必须有一个ip地址,该层的数据称之为数据包。
数据帧分为两部分:头+数据。头包含源地址和目标地址,该地址是IP地址。数据包含传输层整体。
每个广播域都有一个出口:网关(与外界沟通的桥梁)
IP地址的分类:
IPv4、IPv6。
IP地址:可以确定世界范围内任意一个局域网。
IPv4地址的格式:
0.0.0.0----------------------------------------->255.255.255.255
00000000.00000000.00000000.00000000------------------->11111111.11111111.11111111.11111111
如何查看自己电脑的IP地址(cmd):
Windows系统:ipconfig
linux(macOS): ifconfig
公网:固定的,不变的,需要购买。
内网:会变
子网掩码:IP+子网掩码可以算出网络地址。可以确认出世界上唯一一台计算机。
关于ARP协议:将IP地址解析成mac地址,所以只需要知道IP地址就可以确定世界范围内唯一一台计算机。
需要记忆:本地回环地址:127.0.0.1(就是找自己的电脑)
传输层
该层使用的是TCP协议和UDP协议,也称为端口协议,我们一般用端口来表示一个个应用数据。
IP+port:标识全世界范围内独一无二的一个基于网络通信的应用程序。
一个端口表示一个正在运行的应用程序。
端口:0-65535
1. 0-1024之间的端口号一般是系统使用的,我们尽量不要使用,否则有可能会造成端口冲突
2. 1025-8000之间的端口号一般是常用软件软件的端口号
MySQL的默认端口号:3306
Django的默认端口号:8000
3. 以后我们自己开发的软件,尽量使用8000之后的
常用端口号:
应用程序 |
FTP |
TFTP |
TELNET |
SMTP |
DNS |
HTTP |
SSH |
MYSQL |
熟知端口 |
21,20 |
69 |
23 |
25 |
53 |
80 |
22 |
3306 |
传输层协议 |
TCP |
UDP |
TCP |
TCP |
UDP |
TCP |
TCP |
TCP |
DNS:域名解析
域名本质就是IP地址、例如:baidu.com、jd.com就是域名。域名最终还是要解析成对应的IP地址,才能找到IP地址对应的计算机。
应用(application)才是跟我们程序员离得最近的一层。
1、客户端:想用什么协议就用什么协议,客户端是自己开发的。
2、浏览器:我们不能随便使用协议,就要按照浏览器的协议,HTTP协议。
http特征:不安全,因为经过http协议的数据都是明文传输的
https协议:安全,经过https协议传输的数据都是密文传输。https = http + ssl证书
TCP协议和UDP协议
TCP 协议的三次握手和四次挥手
TCP协议也叫可靠协议(等对方确认后才算完成,才会将自己内存中的数据清理),流式协议。(数据是可以多次发送的)
UDP不需要建连接,也不需要等待对方回应。
三次握手建立连接
四次挥手断开联系
为什么建立连接是三次握手,关闭连接确是四次挥手呢?
建立连接的时候,服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能