sockets - TCP的Welcome端口vs连接端口以及三次握手的目的
问题描述
这是来自教科书 James F. Kurose、Keith W. Ross 的图片:计算机网络:一种自顶向下的方法, ISBN-13:978-0-13-285620-1。ISBN-10:0-13-285620-4。
如图所示,欢迎端口与实际连接端口不同。(由于不同的套接字分配了不同的端口号。假设客户端正在初始化一个HTTP请求,所以欢迎端口在Web服务器上是80,然后实际连接端口与80不同?
第二个问题是,TCP握手的目的是什么?我只是被教导为什么 TCP 的握手是但实际上并不知道为什么握手是必不可少的。如果我们摆脱 TCP 的握手,我们仍然可以使 TCP 成为可靠的数据传输协议,不是吗?
解决方案
如图所示,欢迎端口与实际连接端口不同。
不,不是。图片中没有任何迹象表明这一点。表示监听和连接的套接字不同。不是一回事。
(因为不同的套接字被分配了不同的端口号)。
不,不是。一个接受的套接字与接受它的侦听套接字具有相同的本地端口号。我不知道你从哪里得到“欢迎端口”这个词,或者作者从哪里得到“欢迎套接字”这个词。正确的术语是“监听端口”。
那么假设客户端正在初始化一个HTTP请求,那么Web服务器上的欢迎端口是80,那么实际的连接端口不是80?
不,是 80。
第二个问题是,TCP握手的目的是什么?我只是被教导为什么 TCP 的握手是但实际上并不知道为什么握手是必不可少的。如果我们摆脱 TCP 的握手,我们仍然可以使 TCP 成为可靠的数据传输协议,不是吗?
不。它有几个目的,一个是建立双方都知道连接存在,另一个是在每个方向上建立一个初始序列号,这使得攻击者更难注入数据。
推荐阅读
- jquery - 无法使用 jQuery 在上一个跨度内获取链接 ID
- assembly - 在 x86 架构中更改指令的操作码是否可能,或者有多难?
- c++ - 想知道我在这个程序中做错了什么?
- java - Keycloak:检索所有可用的客户端会话
- android - Kotlin 1.2.50 要求 baseFeatureInfoDir
- javascript - Next.js:模块构建失败:错误:无法从“/home/ugurkaya/Desktop”中找到模块“react-hot-loader/babel”
- unity3d - 你如何根据玩家的位置包裹一个关卡
- python - ETF的调整价格
- sql - 子查询 where 子句
- macos - 无法通过备用 git 凭据在我的本地 jenkins 中克隆 vsts 存储库