zoukankan      html  css  js  c++  java
  • Socket套接字

    Socket原理

    1. 网络中如何唯一的标识一个进程

      • 网络层中的IP地址可以唯一的标识一台主机
      • 传输层中的"协议+端口"可以唯一的标识主机中的应用程序(进程),因此,可以利用三元组(ip地址,协议,端口)标识网络中的进程。
    2. Socket怎么通信

      1. SOCK_STREAM:表示面向连接的数据传输方式,数据可以准确无误的到达另一台计算机,如果有损失或者丢失,可以重新传输,但效率相对较慢,常见的http协议就是用的SOCKET_STREAM传输数据。因此要确保数据的正确性。
      2. SOCK_DGRAM:表示无连接的数据传输方式,计算机只能传输数据,不做数据校验。如果数据在传输中损坏,或者没有到达另一台计算机,是没有办法补救的,无法重传,因为SOCK_DGRAM做的工作较少,所以效率比SOCK_STREAM高。例如QQ视频聊天。
    3. TCP/IP协议

      1. 三次握手:
        TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接,客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。
        TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Handshaking)。可以形象的比喻为下面的对话:
      [Shake 1] 套接字A:“你好,套接字B,我这里有数据要传送给你,建立连接吧。”
      [Shake 2] 套接字B:“好的,我这边已准备就绪。”
      [Shake 3] 套接字A:“谢谢你受理我的请求。
      
      1. TCP的粘包问题以及数据的无边界性:https://blog.csdn.net/m0_37947204/article/details/80490512

      2. TCP数据报的结构:

        • 序号:Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。
        • 确认号:Ack(Acknowledge Number)确认号占32位,客户端和服务器端都可以发送,Ack = Seq + 1。
        • 标志位:每个标志位占用1Bit,共有6个,分别为 URG、ACK、PSH、RST、SYN、FIN,具体含义如下:
          1. URG:紧急指针(urgent pointer)有效。
          2. ACK:确认序号有效。
          3. PSH:接收方应该尽快将这个报文交给应用层。
          4. RST:重置连接。
          5. SYN:建立一个新连接。
          6. FIN:断开一个连接。
      3. 链接的建立:

  • 相关阅读:
    Entity Framework 第十篇 条件查询
    Entity Framework 第九篇 关于自增列的事务处理
    Entity Framework 第八篇 结构优化
    Entity Framework 第七篇 简化排序
    控件截图Cache
    Java基础_自加运算
    Java基础_赋值运算
    Java基础_字符与字符串的运算
    同步和异步
    Application中的name属性
  • 原文地址:https://www.cnblogs.com/charlottepl/p/12943316.html
Copyright © 2011-2022 走看看