网络分七层,由下往上分为物理层,数据链路层,网络层,传输层,协议会话层,应用层。HTTP属于应用层,TCP属于传输层。
TCP协议是基于服务器与客户端之间发生的。客户端发起请求,与服务器建立连接(一个服务器可以接受多个客户端的连接,一个客户端只能连接一台服务器),使上层网络数据的传输建立在“无差别”的网络之上。为了使得多进程通讯时不至于发生混乱,必须把端口号(16位)和IP(32位)结合起来使用,称为Socket。在整个网络中,这样一对48位的Socket进行的传输层通讯必须是唯一的。
用socketserver
创建一个TCP服务器
from socketserver import BaseRequestHandler, TCPServer
#继承BaseRequestHandler这个base class,并重定义handle()
class EchoHandler(BaseRequestHandler):
def handle(self):
print('Got connection from', self.client_address)
#self.request is the TCP socket connected to the client
while True:
#8192代表每次读取8192字节
msg = self.request.recv(8192)
if not msg:
break
self.request.send(msg)
if __name__ == '__main__':
#第一对参数是(host, port)
serv = TCPServer(('', 20000), EchoHandler)
serv.serve_forever()