网络基础
文章目录- 一、什么是网络?
- (一)物理层
- (二)数据链路层
- (三)网络层
- (四)传输层
- (五)应用层
- 二、套接字socket
网络:实现资源的共享,实现数据信息的快速传递
网络发送数据的时候不是随便给我们发送的,有着固定的格式,有规定的。
这个时候就有了互联网协议:规定了怎么发数据,怎么收数据
我们按照协议的不同从逻辑层面做了一个划分(OSI七层,TCP/IP五层,TCP/IP四层)
OSI七层 TCP/IP五层
应用层
表示层 =====》 应用层
会话层
传输层 =====》 传输层
网络层 =====》 网络层
数据链路层 =====》 数据链路层
物理层 =====》 物理层
(一)物理层物理层:建立底层的通信介质,通过网线将二进制数据发送出去
(二)数据链路层数据链路层:单纯的电信号,只有高低高低,0101啥的,没有意义。数据链路层定义了电信号的分组方式
- 以太网协议
- 一组电信号构成数据包
- 每个数据包分为:报头、数据两个部分
- 报头:包含固定的18个字节(我这个数据包发出去要别人知道怎么收数据)
- 发送者 源地址
- 接受者 目标地址
- 对数据的描述
- 数据包含:
- 数据的具体内容
- 报头:包含固定的18个字节(我这个数据包发出去要别人知道怎么收数据)
引入了一个新的地址,用来区分子网、网络地址、IP协议、IPv4.
使用的是32位的2进制来表示
0.0.0.0~255.255.255.255
00000000.00000000.00000000.00000000
11111111.11111111.11111111.11111111
一个IP地址我们通常是使用点分十进制表示:172.16.10.1 就是地址的数据我们用十进制来表示
-
如果你想要开发一个所有人都能访问的网站:
- 要申请一个公网IP
- 买一台服务器(就是一台性能非常好的电脑)
- 公网IP绑定到这个服务器
- 把你写好的代码在这个服务器上运行起来
-
我们所有的网络程序可以分为两种
应用类:需要下载的 QQ、微信、网盘
web类:通过浏览器去使用的 百度、知乎、淘宝
- C/S架构 客户端和服务端(应用类)
- B/S架构 浏览器和服务端(web类)
网络层的IP帮我们区分了子网,mac地址帮我们找到了具体的机器
我们要如何标识机器上的应用程序,使用的就是端口,建立了端口到端口的通信
指定了传输协议:TCP UDP协议
- TCP协议:
- UDP协议:
规定了应用程序的数据格式。
二、套接字socket帮我把TCP/IP协议的都封装了
我们写程序要先写服务端,再写客户端
服务端:为客户端提供服务
客户端:考虑一些界面性的东西
import socket
#1 创建一个socket对象 (比如通过socket去收发消息) (有电话)
server_object = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #socket这个包内有个socket这个类
#socket.AF_INET表示我们地址的类型
#2 绑定地址 bind需要的参数是一个元组 (有电话号码)
server_object.bind(("127.0.0.1", 10086))
# 127.0.0.1:本地回环地址
# 10086:端口号
#3 设置监听 (开机)
server_object.listen(5)
#4 处理客户端的请求
conn ,addr = server_object.accept()
#conn:接收端口值
#addr:接收IP地址
#5 收发消息
data = conn.recv(1024)#你可以设置一次接收1024个字节
conn ,addr = server_object.accept()
#conn:接收端口值
#addr:接收IP地址
#5 收发消息
data = conn.recv(1024)#你可以设置一次接收1024个字节



