Socket是基于TCP和UDP协议的编程。
Socket编程进行的是端到端的通信,往往意识不到中间经过多少局域网,多少路由器因此能够设置的参数也只能是端到端协议之上网络层和传输层的。
在网络层,Socket函数需要指定到底是IPv4 还是IPv6,另外还要指定是TCP还是UDP协议。
基于TCP协议的Socket程序函数的调用过程
TCP的服务器要先监听一个端口,一般是先调用bind函数,给这个Socket赋予一个IP地址和端口。(内核通过TCP头里面的端口号来找到相应的应用程序,通过IP地址找到监听网卡的包)
监听的Socket和真正用来传数据的Stock是两个,一个叫做监听Socket,一个叫做已连接Socket

TCP的Socket就是一个文件流
基于UDP协议的Socket程序函数调用过程
UDP是无连接的,所以不需要三次握手定律,也就不需要调取listen和connect,但是UDP的交互仍需要IP和端口号。
UDP是没有维护连接状态。因而不需要每队连接建立一组Socket,而是只要有一组Socket,就能和多个客户端通信。

网友评论