初识TCP/UDP

计算机网络七层协议结构(OSI),由底层向上:

物理层->数据链路层->传输层->网络层->会话层->表示层->应用层 //欲详细了解每个层次请转到(http://blog.csdn.net/yaopeng_2005/article/details/7064869)
我们所关注的 tcp/udp 协议就在传输层. (ps. 网络层- ip 协议, 应用层- http 协议)

socket通信:

通常为 TCP 连接, socket 通信可以抽象的理解为是连接应用层与传输层的管道,两层间复杂的操作都被抽象成为 socket 通信接口.是对 TCP/IP 的封装
通信的三个步骤: 服务端利用 socket 监听端口 -> 客户端发起连接请求 -> 服务端返回确认信息,建立通信
下图就是 socket 通信的流程(图片来源于网络)

05232335-fb19fc7527e944d4845ef40831da4ec2.png

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 字节

推荐阅读更多精彩内容

  • 参考:http://www.2cto.com/net/201611/569006.html TCP HTTP UD...
    F麦子阅读 1,712评论 0 13
  • 1.1 TCP/IP协议组 TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成 IP层负责...
    F麦子阅读 1,893评论 0 25
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 3,499评论 0 3
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 9,862评论 6 173
  • 转。。。。。。。。 SOCKET,TCP/UDP,HTTP,FTP (一)TCP/UDP,SOCKET,HTTP,...
    zeqinjie阅读 2,627评论 1 52