网络编程

软件开发架构

网络编程:我们要基于网络来编写一款B/S或者C/S架构的软件,如之前的ATM都是没有接入网络的,是别人无法访问的。

目的:把系统基于网络传输,别人想用时就必须把客户端下载到本地电脑上,以登录为例,把用户名和密码在客户端输入,用户名和密码会传到服务端进行用户名和密码的验证,这就是基于网络开发出的软件。

C/S:指的是客户端和服务端  (客户端相当于用户,服务端相当于饭店的工作人员)

B/S:指的是浏览器和服务端(浏览器也称之为超级客户端,万能客户端)(浏览器相当于用户,服务端相当于饭店的工作人员)

客户端可以有多个,服务端只能有一个。本质上B/S架构也是C/S架构。

服务端要具备的特点:

1、24小时不间断对外提供服务。

2、服务端要有一个公网IP。(服务器也就是另一台计算器,需要去买,阿里云、腾讯云购买)

 

OSI七层协议

网络:本质上就是上传和下载数据的过程。

网络的组成部分:物理连接介质+互联网通信协议。

互联网通信协议:

OSI的七层协议和五层协议

物理层

物理层: 基于电信号,它是用来发送高低频发送电信号,一组物理层数据称之为位。

单纯发送高低频无意义,需要对电频进行分组,但是物理层不能分组。

数据链路层(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一般都会分开发送,从而导致多了一次。

 

 

posted @   别管鱼油我了  阅读(141)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示