socket编程
OSI七层
![](https://amfc-1301595111.cos.ap-chengdu.myqcloud.com/learn/python/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/OSI%E4%B8%83%E5%B1%82.jpg)
1. socket编程
![](https://amfc-1301595111.cos.ap-chengdu.myqcloud.com/learn/python/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/socket1.jpg)
- socket层
![](https://amfc-1301595111.cos.ap-chengdu.myqcloud.com/learn/python/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/socket2.jpg)
- socket套接字工作流程
![](https://amfc-1301595111.cos.ap-chengdu.myqcloud.com/learn/python/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/socket%E5%A5%97%E6%8E%A5%E5%AD%97.jpg)
# server
import socket
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.bind(('127.0.0.1', 8000))
phone.listen(5)
conn, addr = phone.accept() # 等电话
msg = conn.recv(1024) # 收消息
print('客户端发来的消息是:', msg)
conn.send(msg.upper())
conn.close()
phone.close()
# client
import socket
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.connect(('127.0.0.1', 8000)) # 拨通电话
phone.send('hello'.encod('utf8'))
data = phone.recv(1204)
print('收到服务端发来的消息')
- 三次握手/四次挥手
![](https://amfc-1301595111.cos.ap-chengdu.myqcloud.com/learn/python/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/tcp%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%92%8C%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B.jpg)