网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。一般系统网络协议包括五个部分:通信环境,传输服务,词汇表,信息的编码格式,时序、规则和过程。
Socket是应用层和TIP/IP协议簇通信的中间软件抽象层
socket编程
Socket网络通信接口
Socket套接字由远景研究规划局(Advanced Research Projects Agency, ARPA)资助加里福尼亚大学伯克利分校的一个研究组研发。其目的是将TCP/IP协议相关软件移植到UNIX类系统中。设计者开发了一个接口,以便应用程序能简单地调用该接口通信。这个接口不断完善,最终形成了Socket套接字。Linux系统采用了Socket套接字,因此,Socket接口就被广泛使用,到现在已经成为事实上的标准。与套接字相关的函数被包含在头文件sys/socket.h中。
在客户端和服务器端使用的套接字不同
在客户端的套接字
在客户端需要创建一个套接字,并且指定连接目标的IP地址和端口号
在服务器端的套接字
在客户端需要创建一个套接字,并且绑定到一个指定的端口号
建立连接
套接字的协议
使用不同的协议对数据传输的方式和效率有着不同的影响
而最常使用的就是TCP和UDP两种
TCP通信流程
TCP是一个面向连接的,安全的,流式传输协议,这个协议是一个传输层协议。
- 面向连接:是一个双向连接,通过三次握手完成,断开连接需要通过四次挥手完成。
- 安全:tcp通信过程中,会对发送的每一数据包都会进行校验, 如果发现数据丢失, 会自动重传
- 流式传输:发送端和接收端处理数据的速度,数据的量都可以不一致