参考:
简单理解Socket
1. TCP 和 UDP
tcp和udp都是是传输层的协议。
-
UDP(用户数据报协议)
- 只管发送,不确认对方是否接收到
- 将数据及源和目的封装成数据包中,每个数据包的大小限制在64K之内
- 不需要建立连接,速度快,因此是不可靠协议
- 应用场景:多媒体教室/网络流媒体
-
TCP(传输控制协议)
- 建立连接,形成传输数据的通道,效率会稍低
- 在连接中进行大数据传输(数据大小不收限制)
- 通过三次握手完成连接,是可靠协议,安全送达
2. Socket
1.定义:
Socket 是操作系统提供的进程间通信的机制。是操作系统为应用程序提供一组接口(API),称为套接字接口(英语:socket API)
2.原理:
使用 本地IP地址 + 本地通讯端口 + 通讯协议 + 远程IP地址 + 远程通讯接口 这5个元来唯一确定2个进程间的通讯。
3.原生Socket通讯流程
socket是"打开--读/写--关闭"模式的实现。如下为使用tcp协议的socket流程。
1.服务器根据地址类型,socket类型,协议类型创建socket。 socket()
2.服务器为socket绑定ip地址 和 端口号。bind()
3.服务器socket监听端口号。listen()
4.客户端创建socket。
5.客户端打开socket,根据服务器ip地址和端口号,连接服务器socket。connect()
6.服务器接收客户端socket,被动打开。 Accept()
7.客户端向socket写入信息。write()
8.服务器读取信息。read()
9.客户端关闭。close()
10.服务器关闭。
4.tcp协议的socket中,TCP的三次握手。
在Socket中,服务器socket 和客户端socket建立连接的过程就是tcp的三次握手过程。