欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python 网络的三种架构

程序员文章站 2022-04-29 20:40:43
[TOC] 网络的三种架构 单机架构 不用联网,比如我们玩的单机游戏 CS架构 client: 客户 server:服务 客户端 服务端 BS架构 brower 浏览器 server 服务 客户端嫁接在浏览器上 服务端(bs为cs的一种) 互联网的组成 教材版 1.边缘部分: 客户端或者服务端 2. ......

网络的三种架构

单机架构

不用联网,比如我们玩的单机游戏

cs架构

client: 客户 server:服务

客户端-->服务端

bs架构

brower 浏览器 server 服务

客户端嫁接在浏览器上-->服务端(bs为cs的一种)

互联网的组成

教材版

1.边缘部分: 客户端或者服务端

2.核心部分:路由器,基站

科普版

1.硬件:一些硬件设备

2.软件:通过一些osi协议组织无序的电信号为有序

osi七层协议(==面试经常问==,可以参考老师的示范,mp3文件)

物理层

电缆,光缆,能看得见的设备,连接计算机,传输电信号

数据链路层(局域网内)

把信号分组,数据只能在局域网内传输,局域网传输靠mac地址和交换机

head(以太网头)

​ 发送地址 6 个字节

​ 目标地址 6个字节

​ 数据类型 6个字节

data 有长短限制

mac地址才是计算机的唯一编号

以广播的形式传输

网络层(局域网相连)

我们想连接其他局域网的电脑,比如美国的电脑,原则意义上我们可以通过交换机,网线把美国的电脑连接上,想想这可能吗?是不是想想都很恐怖

那如何连接上其他局域网的计算机呢?就是网络层

ip地址,ip地址是靠路由器传输,然后就可以跨局域网通信

我们可以获取自己的ip地址,在cmd中输入ipconfig,就可以看到自己的ip地址

ip地址+mac地址确定世界独一无二的计算机

传输层

传输层给了一个端口

ip地址+mac地+端口就能确定世界上独一无二的计算机上的应用程序

应用层

应用程序

tcp 协议

数据从客户端-->服务端的协议

三次握手建立联系

python 网络的三种架构

如果你要去服务端下载视频,客户端和服务端之间必须得连接,连接就是三次握手:

在连接之前客户端和服务端都是出于关闭状态的

1.客户端会像服务端发起一个请求,如下载视频,会有一个syn报头

2.服务端会接收到客户端的请求,然后会响应客户端,并且把syn报头改装好后又返回客户端,会有ack的报头

3.客户端开始进入建立连接状态,再发一条请求,请求带上ack给服务器,让服务器也进入连接状态

为什么要三次呢?

1次可以吗?为什么

1.客户端直接进入连接状态,直接发送请求给服务端,直接进入连接状态

弊端:假使这时客户端发送一个伪ip,直接发给服务端,服务端就立马进入连接,会导致服务端无效传输,浪费服务端的资源

2次可以吗?为什么

1.客户端暂不进入连接状态,发一条请求给服务端

2.服务端直接进入连接状态,发送一条确定请求给客户端,客户端收到直接进入连接状态

弊端: 一般服务端不会出现故障,死机之类的,客户端比较容易出现这种问题,假使在第2步的时候,客户端死了,这时服务端知道吗?并不知道,还是照旧传输数据,也会造成服务端资源的浪费

综上就是必须3次就可以进行建立连接

四次挥手关闭连接(为什么3次不行)

python 网络的三种架构

1.客户端会发送请求带上fin报头给服务端说我够了,要断开连接

2.服务端接收到客户端的请求后,返回一个带有ack报头的请求说确认了,还有数据没有传完,等会吧

(1.fin报头并没有返回 2.但是服务端此时还有可能传输数据)

3.服务端数据传输结束之后服务端又会发送一次带报头fin的请求,告诉客户端我所有数据都发完了,结束吧

(如果只有三次连接,但是客户端可能在第二次连接后死掉了,客户端压根没有收到第2-3步之间的数据传输,服务端并没有管你客户端到底接收到了没有,然后服务端是发送给了你确认关闭)

4.所以必须得有第四次,客户端像服务端进行一次确认,我收到了你中途发的数据