ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 什么是 TCP 流?

什么是 TCP 流?

原创 Linux操作系统 作者:哎呀我的天呐 时间:2022-10-09 13:02:10 0 删除 编辑

其实,这里的 TCP 流,就是英文的 TCP Stream。

Stream 这个词有“流”的意思,也有“连续的事件”这样一个含义,所以它是有前后、有顺序的,这也正对应了 TCP 的特性。

跟 Stream 相对的一个词是 Datagram,它是指没有前后关系的数据单元,比如 UDP 和 IP 都属于 Datagram。

在 Linux 网络编程里面,TCP 对应的 socket 类型是 SOCK_STREAM,而 UDP 对应的,就是 SOCK_DGRAM 了。

显然,DGRAM 就是 Datagram 的简写。

在具体的网络报文层面,一个 TCP 流,对应的就是一个五元组:传输协议类型、源 IP、源 端口、目的 IP、目的端口。比如,今天你访问了xxxx网站,那么你这次的 TCP 流就可 能就是这样一个五元组:

(TCP, your_ip, your_port, geekbang_ip, 443)

一个 IP 报文,包含了所有这五个元素,所以 Wireshark 在解析抓包文件时,自然就能通过五元组知道每个报文所属的 TCP 流了。

这也是为什么我们可以在 Wireshark 里,用Follow TCP Stream 的方法,找到报文所在的 TCP 流。

不过有时候,也会有四元组的说法。其实它跟五元组大体上是一致的,只是四元组没有区分传输层协议类型(TCP 或者 UDP)。

但是如果我们都清楚地知道应用类型,比如知道应用是 HTTP 协议的,那它的传输层协议默认就是 TCP,这一元是否算在里面,已经不重要了。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29990276/viewspace-2917369/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: tcpdump历史
请登录后发表评论 登录
全部评论
https://cloud.tencent.com/developer/inventory/14362

注册时间:2014-10-30

  • 博文量
    403
  • 访问量
    2529089