TCP/IP是一个四层的分层体系结构:
应用层:应用层,表示层,会话层(OSI)
传输层:传输层
互联网层:网络层
网络接口层:数据链路层,物理层
在TCP/IP模型中,最主要的两个协议TCP/IP分别属于传输层和互联网层。
Socket模块:
socket(socket_family,socket_type,protocol = 0)
其中:
socket_family 该参数的值可以为AF_UNIX或AF_INET.
socket_type 该参数的值可以为SOCK_STREAM或SOCK_DGRAM.
protocol 该参数一般不赋值,默认值为0.
套接字包括两个;服务器套接字和客户机套接字。套接字在工作的时候,将连接对端分为服务端和客户端,这也是C/S模式的由来。套接字的对端通信是不对等的。根据不同的通信方式,通信协议可以分为对称协议和非对称协议。
处理客户端套接字比处理服务端套接字容易,因为服务器必须准备随时处理客户端的连接,同时还要处理多个连接,而客户机只是简单地连接,完成事务、断开连接。一个套接字就是一个socket模块中的socket实例。
第一个参数是地址簇(默认是socket.AF_INET)。
第二个参数是流(默认值为socket.SOCK_STREAM)或数据报(默认值为socket.SOCK_DGRAM)套接字。
第三个参数是使用的协议(默认值为0,使用默认值即可)。
客户端应用程序在生成套接字对象后,可以调用bind()方法来绑定自己的请求套接字接口地址,然后调用connect()方法来连接服务器端进程。当连接建立后,可以使用send()和recv()方法来传输数据。最后需要使用close()方法将端口关闭。
服务器端套接字使用bind()方法绑定一个套接字接口地址,接着使用listen()方法监听客户端请求。当有客户端请求时,将通过accept()方法来生成一个连接对象,然后通过此连接对象发送和接受数据。数据传输完毕,可以调用close()方法将生成的连接关闭。