【问题标题】:TCP's Welcome port vs connection port and the purpose of three way handshake [duplicate]TCP的欢迎端口与连接端口以及三次握手的目的[重复]
【发布时间】:2018-10-10 02:15:34
【问题描述】:

这是来自教科书 James F. Kurose、Keith W. Ross 的图片:计算机网络:一种自上而下的方法, ISBN-13:978-0-13-285620-1。 ISBN-10:0-13-285620-4。

根据图片,欢迎端口与实际连接端口不同。(因为不同的套接字分配了不同的端口号。 那么假设Client正在初始化一个HTTP请求,那么Web服务器上的欢迎端口是80,那么实际的连接端口就不是80了?

第二个问题是,TCP握手的目的是什么?我只是被教导为什么 TCP 的握手是但实际上并不知道为什么握手是必不可少的。如果我们摆脱 TCP 的握手,我们仍然可以让 TCP 成为一个可靠的数据传输协议,不是吗?

【问题讨论】:

  • 请注意,您包含的图表显示服务器进程上有两个 sockets。不是两个端口。两个套接字使用相同的服务器端口。 (“套接字”的概念只是服务器端的软件,与通过网络发送的内容没有任何关系。)

标签: sockets networking tcp tcp-ip


【解决方案1】:

根据图片,欢迎端口与实际连接端口不同。

不,不是。图片中没有任何迹象表明这一点。表示监听和连接的sockets是不同的。不是一回事。

(因为不同的套接字分配了不同的端口号)。

不,不是。接受的套接字具有与接受它的侦听套接字相同的本地端口号。我不知道你从哪里得到“欢迎端口”这个词,或者作者从哪里得到“欢迎套接字”这个词。正确的术语是“监听端口”。

那么假设客户端正在初始化一个HTTP请求,那么Web服务器上的欢迎端口是80,那么实际连接端口不是80?

没有。现在是 80。

第二个问题是,TCP握手的目的是什么?我只是被教导为什么 TCP 的握手是但实际上并不知道为什么握手是必不可少的。如果我们摆脱 TCP 的握手,我们仍然可以让 TCP 成为一个可靠的数据传输协议,不是吗?

没有。它有几个目的,一个是建立双方都知道连接存在,另一个是在每个方向上建立一个初始序列号,这使得攻击者更难注入数据。

【讨论】:

  • 那么socket和端口号有什么区别呢?有人告诉我“IP地址和端口”一起称为“Socket”,那么既然ip地址和端口号对于欢迎和连接套接字是相同的,为什么我们有两个不同的套接字?
  • 感谢您发布答案。但是既然IP地址和端口号一起被称为“Socket”,那么为什么我们有2个不同的socket:welcoming和connection socket,因为它们的ip地址和端口号是一样的?
  • 不,再次。 'IP地址和端口'一起被称为“套接字”'是假的。套接字是连接的端点。见我刚刚发布的链接,其他重复。
【解决方案2】:

在最低级别,“欢迎套接字”是一个文件描述符,表示特定端口上的侦听套接字。当另一台计算机连接到该端口并且服务器调用accept 时,将生成一个表示该特定连接的新文件描述符。就是这张图上的“连接插座”。

三路握手是建立 TCP/IP 会话的参数所必需的。 TCP/IP 是一个相当小的协议,没有太多的大惊小怪或仪式。 SYN、SYN-ACK、ACK 过程确保连接的两端在数据传输开始之前是同步的。

这个同步过程挺熟悉的:

如果没有最后的 ACK,发送 SYN-ACK 的一方不知道是否收到了他们的响应。第三个数据包是提供确认所必需的。

【讨论】:

    猜你喜欢
    • 2021-03-08
    • 1970-01-01
    • 2018-09-19
    • 2015-06-02
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多