网络编程 TCP协议
1.理论知识
2.通信 -- 程序编码
架构 -- 程序员开发的一种模式
C/S架构 客户端/服务器模式
B/S架构 Browser浏览器 / 服务器模式
B/S架构的优势: 统一了应用的接口
网络通信编程:
同一台电脑上两个py文件通信 --- 文件
两台电脑 如何通信? --- 一根网线
多台电脑(在同一个局域网) 如何通信? --- 交换机
更多台电脑(不在同一个局域网) 如何通信? --- 交换机+路由器
网卡:mac地址(物理地址),一般是由网卡生产厂商给的,不能随便给,要遵循一定的规则,因为mac地址要求全球唯一.
mac地址(物理地址) : 在cmd 查看命令 ipconfig /all mac地址是12位十六进制组成
ip地址: 是一个四位点分十进制组成(ipv4)
端口: 操作系统为每一个应用程序分配一个端口号
ip + 端口号 唯一确定某一个电脑上的某一个程序
arp协议: 通过目标ip地址,获取目标mac地址
给你一个ip地址,如何确定它是不是在你当前局域网内?
ip地址 & 子网掩码
ex:
ip地址 192.168.1.12
1100 0000 . 1010 1000 . 0000 0001 . 0000 1100
1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
结果 1100 0000 . 1010 1000 . 0000 0001 . 0000 0000
结果 -------> 192.168.1.0 网段
网段是由IP地址的前三位决定的.例:(192.168.1)这就是一个网段,第四位数大于等于 0 小于 256 ,他们都是一个网段的.
用网段来确定一个IP地址是否和自己在一个局域网内.
网段 = IP地址 & 子网掩码
路由器 : 有一个路由表,记录了归他管理的所有的网段.
协议 : 由多人制定的一种规则.
通过socket模块去操作tcp和udp协议
TCP协议: 通信方式 : 安全可靠,是面向连接
UDP协议: 通信方式 : 不安全,不可靠,但是快,不是面向连接.
IP地址: 127.0.0.1 : 回环地址:无论什么时候都可以代表本机的IP地址(只限在本机使用)
TCP协议:
三次握手 : 注意必须是client(客户端)先发起请求
1.client发送给server 我想连接你,可以吗?
2.server回复client,可以,我也想连接你,可以吗?
3.client回复server,可以
四次挥手 : 谁先发起请求都可以
1.client发送请求:我准备断开连接了,我没有数据需要发送了;如果你有数据可以继续发给我.
2.server回复:确认收到你的请求,我开始着手准备断开事宜.
3.server回复:我准备好了,可以随时断开连接.
4.client回复:断开连接吧.
OSI五层模型:
应用层 py文件
传输层 TCP/UDP协议
网络层 IP协议
数据链路层 arp协议,网卡
物理层 网线,集线器,光纤
TCP协议编码: 服务器 和 客户端
服务器:
import socket
sk = socket.socket() #里面什么参数都不写,默认是TCP协议
sk.bind(("ip地址",端口号)) # 端口号:0-65535 0 - 1023(不能用) 8000 - 10000
sk.listen() #监听 (建议用的端口号)
conn,addr = sk.accept() #接通
ret = conn.recv(1024) #接收
print(ret) #接收的是bytes类型.
conn.close()
sk.close()
客户端:
import socket
sk = socket.socket()
sk.connect(("服务器的IP地址",服务器的端口号)) #与服务器建立联系
sk.send(bytes类型) #给服务器发送内容,内容必须是bytes类型
sk.close()
=================================================================
必须背过的东西,面试题
1.arp协议
2.tcp和udp的区别
3.tcp三次握手和四次挥手
4.什么是协议
5.tcp协议编码流程