===
''' Socket网络编程: --应用层:http smtp dns ftp ssh snmp dhcp... 无论协议是什么本质上都是数据交换,总结为两种方式:收和发 --传输层(端口Port) TCP (UDP) --网络层(包IP地址) IP --数据链路层(报文mac地址) TCP三次握手四次断开 握手:syn syn+ack ack so.... 把传输层TCP/UDP以下的收和发,封装为Socket 客户端--服务器 客户端:我是192.168.1.2:8377,我找22.34.6.122:80(balabalabala) 服务器:收到来自192.168.1.2:8377的消息(balabalabala),并返回消息(hehehehhe) 地址簇:(网络层 IP) socket.AF_UNIX 本机进程间通信,在127.0.0.1转一圈 socket.AF_INET IPV4 socket.AF_INET IPV6 Socket 类型:(传输层TCP) socket.SOCK_STREAM # TCP协议 socket.SOCK_DGRAM # UDP协议 socket.SOCK_RAW # 原始套接字,改网络层的东西,可以修改IP地址头, # 洪水攻击(三次握手的时候,客户端不发最后一次ack造成服务器A线程挂起1分钟, 在伪造IP再发,B线程再挂起1分钟...不停伪造,服务器会拒绝响应) socket.SOCK_ROM # 可靠的UDP形式,保证交付数据但不保证顺序。发过去ABC 可能接收到CAB '''
import socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # IPV4,TCP协议
TCP/IP
TCP是面向连接的可靠的传输协议
socket的两端都要关闭。要吗手动关闭,要吗等超时后系统自动关闭,四次分手才能释放双方的资源