1. socket 套接字
Socket 是一个用于网络通信的技术。Socket 通信允许客户端——服务器之间进行双向通信。它可以使任何客户端机器连接到任何服务器,安装在客户端和服务器两侧的程序就可以实现双向的通信。Socket的作用就是把连接两个计算机的通信软件“中间接”起来,能够实现远程连接
socket 是一个编程接口 (网络编程接口),是一种特殊的文件描述符 (write/read/close)
socket 并不仅限于TCP/IP协议socket 是独立于具体协议的编程接口,这个接口位于TCP / IP四层模型中的应用层与传输层之间
socket类型:(1) 流式套接字 (SOCK_STREAM)
面向字节流,针对传输层协议为TCP的应用
保证数据传输是可靠的
提供一种可靠的、面向连接的双向数据传输服务,实现了数据无差错、无重复的发 送。流式套接字内设流量控制,被传输的数据看作是无记录边界的字节流
(2) 数据报套接字 (SOCK_DGRAM)
针对传输层协议为UDP的应用
提供一种无连接的服务,该服务并不能保证数据传输的可靠性它提供了一种无连接、不可靠的双向数据传输服务。数据在传输过程中可能会丢失或重复,并且不能保证在接收端按发送顺序接收数据
(3) 原始套接字(SOCK_RAW)直接跳过传输层,该套接字允许对较低层协议 (如IP或ICMP) 进行直接访问,常用于网络协议分析,检验新的网络协议实现,也可用于测试新配置或安装的网络设备
把socket (网络编程接口)当成一个特殊的文件描述符即可
2. TCP网络应用
任何的网络应用都有通信双方:
服务器(Server) / 客户端(Client)
网络结构:CS架构
TCP套接字编程基本流程:
TCP网络应用
TCP Server
TCP Client
任何的网络应用:IP(目标主机) + 传输层协议(如何传输) + 端口号(具体应用)
TCP网络应用的数据传输的大致过程:
(1) 建立连接:
"三次握手"
(2) 发送/接收网络数据 (操作socket)
write / send / sendto
read / recv / recvfrom(3) 关闭连接:
"四次挥手"
TCP网络应用编程流程:
TCP Server
(1) socket:创建一个套接字
(2) bind:把一个套接字和网络地址绑定到一起