套接字 - 面向连接TCP和无连接UDP

套接字 - 面向连接TCP和无连接UDP


客户端 / 服务端架构

  • 什么是客户端 / 服务端架构
    • 服务器是一个软件或硬件,用于向一个或多个客户端(客户)提供所需要的服务
    • 服务器存在的唯一目的就是等待客户的请求,给这些客户服务,然后再等待其他的请求

套接字: 通信端点

  • 通信端点

    • 让服务器能监听请求
  • 什么是套接字

    • 套接字是一种具有通信端点概念的计算机网络数据结构
    • 网络化的应用程序在开始任何通讯之前都必须要创建套接字
  • 套接字的类型

    • 面向连接的套接字,即在通信之前一定要建立一条连接,也被称为"虚电路"或"流套接字"

面向连接与无连接

  • 面向连接

    • 在通信之前一定要建立一条连接,也被称为"虚电路"或"流套接字"

    • 特点:

      • 面向连接的通信方式提供了顺序的、可靠的、不会重复的数据传输,而且也不会被加上数据边界。
      • 这也意味着每一个要发送的信息,可能会被拆分成多份,每一份都会不多不少的正确的到达目的地,然后被重新按顺序拼装起来,传给正在等待的应用程序
    • 这种连接方式主要协议是传输控制协议(即TCP)。要创建TCP套接字就得在创建的时候指定套接字类型的SOCK_STREAM

    • TCP套接字采用SOCK_STREAM这个名字,表示它作为流套接字的特点

    • 由于这些套接字使用网际协议(IP)来查找网络中的主机,所以这样形成的整个系统,一般有两个协议组成(TCP / IP),即 TCP / IP

  • 无连接

    • 与虚电路完全相反的数据报型的无连接套接字

    • 特点:

      • 无需建立连接就可以进行通讯
      • 数据报会保留数据边界,意味着数据是整个发送的,不会像面向连接的协议那样先拆分成小块
    • 缺点:

      • 数据到达的顺序、可靠性及不重复性无法保证,甚至可能会丢失
    • 优点:

      • 由于面向连接需要提供一些保证,以及要维持虚电路连接,这些都是很重的额外负担
      • 数据报没有这些负担,所以它更"便宜"。通常能提供更好的性能,更适合某些应用场合
    • 实现这种连接的主要协议是用户数据报协议(即UDP)。

    • 创建UDP套接字需要指定套接字类型为SOCK_DGRAM

    • 由于UDP套接字使用的是网际协议来查找网络中的主机,所以这样形成的整个系统,一般有两个协议组成(UDP / IP),即 UDP / IP

posted @ 2021-08-29 13:53  苟住,别浪  阅读(229)  评论(0编辑  收藏  举报