跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • TCP/IP 协议支持全双工的一些疑惑
未分類
25 2 月 2021

TCP/IP 协议支持全双工的一些疑惑

TCP/IP 协议支持全双工的一些疑惑

資深大佬 : bbbai 1

今天猛然惊觉 ,TCP/IP 是支持全双工传输的,但是在印象中一般都是使用多线程进行处理,比如一个线程负责接收,一个线程负责发送。这样的话不就是等同于每线程同一时间要么处理接收要么处理发送,这不就是半双工了么。

对此实在感到不解。TCP/IP 支持全双工的具体表现形式和应用场景是什么样的?

如果有了解此处问题的还望不吝赐教。

大佬有話說 (17)

  • 資深大佬 : monsterxx03

    比如 http2 的 multiplexing , 在同一个 tcp connection 上跑多个 stream, 好处是减少了 latency(只需要一次连接建立), 坏处是单 connection 用不上多核, 很注重吞吐量的场景还需要在这之上实现一个线程池.

  • 資深大佬 : sagaxu

    非阻塞 io 了解一下

  • 資深大佬 : misaka19000

    全双工和线程有什么关系

  • 資深大佬 : si

    你的线程怎么处理和 TCP/IP 全双工没有关系啊,TCP/IP 的全双工只是说 TCP/IP 的底层处理的。
    全双工是指一方发送的时候,另一方也可以同时发送,对应过来就是可以同时发送和接收。
    半双工是一方发送的时候,另一方要接收完成才可以开始发送。
    发送和接收是不同的 buffer,两种操作可以同时进行就是全双工。如果发送要等接收结束,接收要等发送结束,就是半双工。
    换到你的线程上来说,一个线程 A 正在接收,另一个线程 B 同时可以发送,线程 B 不用等 A 接收完成再发送。发送不影响接收,接收不影响发送。
    就算只有一个线程,用非阻塞的 API 发送和接收,正在发送的时候也不用等待发送结束就可以开始处理收到的数据。
    不管线程有没有正在执行,都不影响网卡的发送和接收处理。
    这个全双工、半双工和线程没有什么关系。

  • 資深大佬 : noe132

    全双工是物理层的吧?和 tcp 有啥关系么

  • 資深大佬 : newtype0092

    打一通电话,既有听筒又有话筒,能边听边说,这就是全双工。
    两个人拿同一个电话,一个只用听筒听,一个只用话筒说,就是你说的多线程,这并不影响这通电话是按全双工的方式工作的,只是你这端把收发分别处理了而已。

    如果是半双工电话,那通话就要同时打两通电话,第一通设置为只能你说对面听,保持住,然后再打一通,设置为只能你听对面说,这样两边才能对话。

  • 資深大佬 : Jooooooooo

    cpu 单核一个时钟只能干一件事, 你理解一下.

  • 資深大佬 : liuminghao233

    两个 tcp 对端难道不能同时发送数据吗

  • 資深大佬 : systemcall

    @noe132 #5
    物理层的话,记得 WiFi 一般是半双工的,一个周期内要么收要么发。百兆的以太网也是支持全双工和半双工的
    串口通信全双工模式也不是一边处理发送一边处理接收吧,还是要读对应寄存器看缓冲区有没有满、有没有收到数据之类的。没有写过以太网的东西,不清楚

  • 資深大佬 : fucUup

    一般是 Epoll 边缘触发,另外,不要造垃圾轮子

  • 資深大佬 : ungrown

    @noe132 #5 一语惊醒梦中人,确实 TCP 哪来的全双工半双工的说法嘛

  • 資深大佬 : alw

    好家伙,这个好像一般是串口通信里的用到的名词,搞电子的可能知道。
    我估计 计算机科班有可能没听说过 什么叫全双工。

  • 資深大佬 : ScepterZ

    lz 的问题看起来是忘记了 cpu 是多核的,可以并行处理

  • 資深大佬 : julyclyde

    @newtype0092 你这两通电话不是半双工,而是两个单工

  • 資深大佬 : julyclyde

    lz 以为是半双工,其实并不是 tcp/ip 的问题,而是应用层协议是应答型导致的
    如果你不考虑请求应答,只是发数据的话,就可以全双工了

  • 資深大佬 : aheadlead

    @alw #11 ……计算机科班只是不常用这个词,但应该还是要知道的

  • 資深大佬 : newtype0092

    @julyclyde 额,确实我写草率了,应该是同一条线路可切换方向但不可同时传输。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具