1.交换机
通过交换矩阵,创建局域网,进行相互之间通信
2.mac地址
网卡内部带的
3.IP地址
电脑地址
4.socket模块
服务端:收发数据->accept/recv
客户端:收发布局->connect/recv
5.黏包
当服务端同时收到多个数据且每个数据长度小于最大接收数时,服务端无法正确拆分多个数据
解决方法:struct模块
6.socketserver模块
服务端创建多个自己与客户端进行交互
网络基础
1.我的电脑有网卡,网卡里有mac地址
2.我到某个地方插上网线,路由器或交换机中的DHCP服务为我分配IP地址
IPv4
ip:192.169.11.11
00000000.00000000.00000000.00000000
0~255 0~255 0~255 0~255
IPv6
00000000.00000000.00000000.00000000.00000000.00000000
子网掩码:255.255.255.0
192.168.13.84
网关IP:192.168.13.1
三个概念:局域网、城域网、广域网
3.DNS
网络连接:
域名解析
www.baidu.com:域名 域名背后一定有一个IP
连接
sk = socket.socket()
sk.connent(('xxx.xxx.xxx',80)) 网站默认80
问题: 域名和IP的对应关系在哪里?
先在本地找:
win本地电脑:C:WindowsSystem32driversetchost
DNS服务器:全球顶级DNS服务器13台
创业:
a.一个服务器+公网IP
b.租域名
域名+IP解析
总结:
1.DHCP,自动为局域网内电脑分配IP
2.网关,路由器中连接交换机的口。
3.IP,4个点分的十进制表示 192.11.11.11
4.子网掩码,将挡住的IP的位数作为网段,未挡住的部分作为可变的值。
ip:192.168.13.99
掩码:255.255.255.0
5.广域网、局域网、城域网
6.arp协议,通过广播给某人发送数据,他通过单播回复
7.DNS,先找本地hosts文件
1.网络端口
-端口,是什么?为什么要有?
端口是为了将同一个电脑上的不同程序进行隔离。
IP是找电脑
端口是找电脑上的程序
示例:
MySQL是一个软件,帮助我们在硬盘上进行文件操作。默认端口3306
Redis是一个软件,帮助我们在内存里进行文件操作。默认端口6379
网站默认端口:80,访问时:http://www.baidu.com:80
网站默认端口:443,访问时:https://www.baidu.com:443
范围:
1 - 65535
1 - 1024
一般程序员用的端口:8000~
-OSI 7层模型
应用层(产生数据,通过自己写的代码实现:自己代码+框架)
应用层:软件
表示层:看到的数据,如图片、视频
会话层:保持登录或链接状态,网站发的令牌:cookie;无痕窗口不允许发令牌
(以下通过socket模块实现)
传输层:TCP/UDP [TCP][cookie]
网络层:IP [IP][TCP][cookie]
数据链路层:MAC [MAC][IP][TCP][cookie]
物理层:将数据转换成电信号发送
********注意:7层一定要背会
-TCP三次握手/四次挥手
socket客户端向服务端发起连接请求:三次握手(客户端发2次,服务端发1次)
client.connect((。。。))
客户端 服务端
我能。。
可以
好的,来了
------------------------------
client.send('...')
收发数据 收发数据
客户端和服务端断开连接:四次握手(客户端2次,服务端2次)
client.close()或conn.close()
我要断开
等我处理完
处理完了,断吧
拜拜
补充:断开连接时,反映到代码上:抛出异常/发送空内容;
总结:了解网络相关知识,
你与科班出身的人区别:
1、计算机组成原理
2、网络
3、数据结构
4、算法