初识TCP/UDP
2017-06-07 本文已影响29人
浪里小青龙
计算机网络七层协议结构(OSI),由底层向上:
物理层->数据链路层->传输层->网络层->会话层->表示层->应用层 //欲详细了解每个层次请转到(http://blog.csdn.net/yaopeng_2005/article/details/7064869)
我们所关注的 tcp/udp 协议就在传输层. (ps. 网络层- ip 协议, 应用层- http 协议)
socket通信:
通常为 TCP 连接, socket 通信可以抽象的理解为是连接应用层与传输层的管道,两层间复杂的操作都被抽象成为 socket 通信接口.是对 TCP/IP 的封装
通信的三个步骤: 服务端利用 socket 监听端口 -> 客户端发起连接请求 -> 服务端返回确认信息,建立通信
下图就是 socket 通信的流程(图片来源于网络)
S 服务端: 创建 socket. 根据ip 地址类型(ipv4,ipv6), socket 类型,协议
S 服务端: 绑定 socket ip 地址与端口号
S 服务端: 监听端口号请求
C 客户端: 创建 socket
C 客户端: 打开 socket, 根据ip 地址跟端口号尝试连接服务端socket
S 服务端: 服务端 socket 接收到服务端 socket 请求,开始接收客户端请求, 等待客户端返回连接. 此时, 服务端socket 进入阻塞状态, 即accept() 方法一直在等待客户端返回连接信息
C 客户端: 连接成功,发送连接状态信息
S 服务端: accept() 方法返回信息,连接成功
C 客户端: 往 socket写入信息发送给服务端
S 服务端: 读取 socket 信息
C 客户端: 关闭 socket
S 服务端: 关闭 socket
接下来简单认识下 TCP/UDP
定义
tcp:传输控制协议
udp:用户数据包协议
特点
tcp:
- 面向连接
- 可靠传输 (有序,无错误,不丢失,不重复,数据完整)
- 一条 TCP 连接, 只能是点对点
- 面向字节流
- 首部开销 20 字节
- 全双工通信 ( 建立连接,随时随地通信)
udp:
- 无连接,广播的形式发送数据 (因此少开销,无需等待确认则传输快. 主机发送效率稳定,不受接受方影响)
- 不可靠传输 (丢包, 重复,大小不稳定,可能不按顺序到达)
- 支持一对一,一对多,多对多,多对一的交互通信
- 面向报文
- 首部开销 8 字节