python认识网络编程

网络开发两大架构

早期数据交互的格式不是基于网络的。

[En]

The format of early data interaction was not web-based.

两个文件之间的数据交互需要通过第三个文件来完成

[En]

The data interaction between two files needs to be done through the third file

a,b文件同时和c文件交互,
a文件把数据先存放c文件中
b文件从c文件取,反之亦然
socket (套接字) 是一个收发数据的工具

有了网络之后
a文件中的数据,通过网络协议,转化101010…二进制进行发送
a文件借助socket发送数据
b文件借助socket接受数据

两大架构

c/s 架构 :
c => client (客户端)
王者荣耀 微信 qq wow dnf …

s => server (服务端)
天河三号 (百亿亿次)

python认识网络编程

B/S 架构 :
b => Brower (浏览器)
谷歌,火狐,360,ie
通过输入网址,访问对方的服务器,对方服务器响应之后,把数据返回,浏览器通过返回的数据,渲染页面,看到最后的结果
s => server (服务端)
一旦开启,永不关机(除非宕机)

在未来,更倾向于使用B/s架构,成为新的趋势
小程序: 微信小程序, 支付宝小程序
(1) 省去复杂下载安装环节,节省手机电脑的空间
(2) 因为手机带来的便捷性,随时随地使用到想要的应用,提升用户的满意度

基础概念

一台主机有两个重要标识:
(1)mac地址:标记一台机器的物理地址 (不可变)
(2)ip 地址:#标记一台机器的逻辑地址 (可变)

IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。ip地址用来标记网络上的每一台主机,方便在收发数据,网络请求时能够找到响应;

ip地址分为两种 ipv4 和 ipv6: 分类ipv4 和 ipv6:
ipv4地址是一个32位的二进制数
ipv6地址是一个128位的二进制数

ipv4: 以4段点分十进制表示 X.X.X.X => 范围
0.0.0.0 ~ 255.255.255.255 地址范围2^32-1
ipv6 : 以8段冒分十六进制表示 X:X:X:X:X:X:X:X => 范围
0:0:0:0:0:0:0:0 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 地址范围2^128-1

ip地址的最后一位0或者255 两个数字不能用,一般最后一位0表达的是网段,255代表广播地址

网段 : 网段的作用,主要用来划分同一区域里的某些机器是否能够互相通信。在一个网段里可以不同过因特网,直接对话
判别的依据:如果IP地址和子网掩码相与得到的值相同就是同一网段

内网 : 以下地址为预留地址,永远不会被当做公网ip来分配
192.168.0.0 – 192.168.255.255
172.16.0.0 – 172.31.255.255
10.0.0.0 – 10.255.255.255

外网 :
任何地方都可以访问的是外部网络(不包括防火墙)

[En]

What can be accessed anywhere is the external network (excluding the firewall)

子网掩码:区分网段和主机
255.255.255.0 / 255.255.0.0 / 255.0.0.0
ip1:192.168.10.12 ip2:192.168.1.16

端口:”端口”是英文port的意译,是具体某个程序与外界通讯的出口。 取值范围:0~65535
使用时至少8000以上 访问地址加端口:192.168.2.1:8000

局域网:在同一区域内由多台计算机互联形成通讯。【具有可重复的内网ip】
广域网:在不同区域内有多台计算机互联形成通讯。【具有唯一的公网ip】
交换机:对同一网段的不同机器之间进行数据转发的设备 [每一台机器和交换机相连,形成通信]
路由器:对不同网段的不同机器之间进行数据转发的设备 [每一个局域网和路由器相连,形成通信]

arp协议:每台主机都有arp缓存表 ,主要作用通过ip找mac的一个协议规则
[实现方式:通过交换机通过广播和单播找到]

[En]

[implementation method: found through a broadcast and a unicast through the switch]

局域网模型

局域网内,各个主机的通讯

python认识网络编程

广域网模型

python认识网络编程

网络的概念

网段的作用:
它主要用于确定同一区域内的一些机器是否可以相互通信。

[En]

It is mainly used to determine whether some machines in the same area can communicate with each other.

在网段中,您可以进行不同于Internet的直接对话。

[En]

In a network segment, you can have a direct conversation different from the Internet.

判别的依据:
如果IP地址和子网掩码相与得到的值相同就是同一网段

“””
逻辑与
全真则真,一假则假
逻辑或
一真则真,全假则假
“””

ip1: 192.168,11.251
子网掩码:255.255.255.0
11000000 10101000 00001011 11111011
11111111 11111111 11111111 00000000
11000000 10101000 00001011 00000000 => 192.168.11.0 (网段)

ip2: 192.168,12.35
子网掩码:255.255.255.0
11000000 10101000 00001100 00100011
11111111 11111111 11111111 00000000
11000000 10101000 00001100 00000000 => 192.168.12.0 (网段)

ip1: 192.168,11.251
子网掩码:255.255.0.0
11000000 10101000 00001011 11111011
11111111 11111111 00000000 00000000
11000000 10101000 00000000 00000000 => 192.168.0.0 (网段)

ip2: 192.168,12.35
子网掩码:255.255.0.0
11000000 10101000 00001011 11111011
11111111 11111111 00000000 00000000
11000000 10101000 00000000 00000000 => 192.168.0.0 (网段)
下面的网络相同,意味着可以互相通信;

端口

端口:具体某个程序与外界通讯的出口 取值范围:0~65535

192.168.2.1:8000 访问这个世界上任何一个电脑里的任何一个软件
自定义端口时,最好命名8000以上的端口号
https://blog.csdn.net/l_smalltiger/article/details/81951824

20 : FTP文件传输协议(默认数据口)
21 : FTP文件传输协议(控制)
22 : SSH远程登录协议
25 : SMTP服务器所开放的端口,用于发送邮件
80 : http用于网页浏览,木马Executor开放此端口
443: 基于TLS/SSL的网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP => HTTPS
3306:MySQL开放此端口

osi 网络七层模型

应用层 (应用层,表示层,会话层)
封装数据:
根据不同的协议,封装不同格式的数据
http (超文本传输协议)
HTTPS (加密传输的超文本传输协议)
FTP (文件传输协议)
SMTP (调子邮件传输协议)

传输层:
封装端口:
指定传输协议(TCP协议/UDP协议)

网络层:
封装ip:
ipv4版本 / ipv6

数据链路层:
封装mac地址:
指定mac地址(arp协议[ip->mac] / rarp协议[mac->ip])

物理层:
打成数据包,变成二进制的字节流,通过网络进行传输

python认识网络编程

交换机与路由器 , 发送数据包流程

交换机: 从下到上拆2层,拆到数据链路层
路由器: 从下到上拆3层,拆到网络层(得到对应的网段)

arp协议: 通过ip -> mac
rarp协议: 通过mac -> ip
arp协议整体是通过: 一次广播 + 一次单播 实现

arp协议的完整过程:
电脑a发现目标主机没有mac,先发送arp广播包,把mac标记成全F的广播地址
交换机接受到arp的广播包,进行从下到上拆包,拆2层,拆到数据链路层看到全F广播地址,开始广播
将此广播数据包发送到每台主机

[En]

Send this broadcast packet to every host

每台主机得到广播包后,都开始拆包,如果该数据包找寻的主机不是自己,自动舍弃
路由器得到arp广播包后,从下到上拆包,拆3层,拆到网络层,得到网段信息
通过路由器的对照信息表,找到网段对应的网关(接口)
对应网关的这台交换机得到arp广播包后,从下到上拆包,拆2层,发现全F广播地址进行广播
数据库主机收到广播包后,依次从下到上拆包,发现自己是目标要找的那台主机,
把自己的ip->mac对照信息封装,变成arp响应包,发送给对应的交换机
交换机得到arp响应包之后,依次进行单播,返回给最终的原主机
在回来的过程中,所有得到过相应arp广播包的主机都会自动更新自己的arp解析表,方便下次使用

TCP/UDP协议:

TCP(Transmission Control Protocol)一种面向连接的、可靠的、传输层通信协议(比如:打电话)
优点:可靠,稳定,传输完整稳定,不限制数据大小
缺点:慢,效率低,占用系统资源高,一发一收都需要对方确认
应用:Web浏览器,电子邮件,文件传输,大量数据传输的场景

udp
UDP(User Datagram Protocol)一种无连接的,不可靠的传输层通信协议(比如:发短信)
优点:速度快,可以多人同时聊天,耗费资源少,不需要建立连接
缺点:不稳定,不能保证每次数据都能接收到
应用:IP电话,实时视频会议,聊天软件,少量数据传输的场景

TCP 三次握手
客户端发送一个请求消息,与服务端建立连接
服务端接受这个请求,发出响应消息,回应客户端,也要与客户端a建立连接(看下a是否同意)
收到服务器的响应消息后,客户端发送回复消息(表示同意,客户端已成功与服务器建立连接)

[En]

After receiving the response message from the server, the client sends a reply message (to express consent, the client has successfully established a connection with the server)

TCP 发送数据
每次发送一次数据,都会对应一个回执消息,如果发送方没有接受到回执消息,那么该数据包在发送一次;

TCP 四次挥手
客户端向服务器发送断开请求(这意味着客户端没有到服务器的数据)

[En]

The client sends a disconnect request to the server (which means the client has no data to the server)

服务端接受请求,发出响应
等待服务器上的所有数据都发送完毕。

[En]

Wait until all the data on the server is sent.

服务器向客户端发送断开请求

[En]

The server sends a disconnect request to the client

客户端接受请求,发出响应

等到2msl,msl(最大报文段生存时间)这么长时间之后
客户端与服务器完全断开连接

[En]

The client is completely disconnected from the server

Original: https://www.cnblogs.com/shuaiyao666/p/16084934.html
Author: 小帅同学啊
Title: python认识网络编程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/500148/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球