网络编程(一)
网络协议:
端口号:每个网络程序像操作系统申请唯一端口号
IP地址->计算机的网络接口(网卡)
IP地址找到接收的计算机,端口号找到接收的程序。
IP协议:数据被分割成一小块一小块,通过IP包发送出去。
IP包:内容(要传输的数据、源IP地址、目标地址、源端口、目标端口)
特点(按块发送、途径多个路由、不保证到达、不保证顺序到达)
TCP协议:通过握手建立连接->对每个IP包编号->确保顺序收到->丢包则重发
TCP编程:
--->主动发起连接--->
客户端 服务器
<------被动响应------<
//创建一个基于TCP连接的Socket import socket; //导入socket库 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) //创建一个socket,AF_INET指定IPv4协议,AF_INET6指定IPv6协议,SOCK_STREAM指定面向流的TCP协议 s.connect(('IP地址', 端口号)) //标准端口号:web(80)、SMTP(25)、FTP(21), <1024的端口号是Internet的标准服务端口 s.send('') //发送数据,HTTP规定客户端先发请求给服务器,格式符合HTTP标准 s.recv(DataSize) //接收数据,DataSize=1024,即最多接收1K字节 s.close() //关闭连接
服务器进程->绑定一个端口->监听来自其他客户端的连接->有连接->建立socket连接
//创建一个socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) //绑定端口 s.blind('IP地址',端口号) //0.0.0.0绑定到所有网络地址,127.0.0.1绑定到本机地址 //监听端口 s.listen(等待连接的最大数量) //永久循环接收来自客户端的连接 while true: sock addr = s.accept()