Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

再扯「三步握手」

  很多做 Web 的人,眼中只有 HTTP 这一层(甚至有一些伪装成前「端工程师」的切图匠连 HTTP 都不了解)。问起 TCP,估计就会刷掉一大波。当然,有很多人是知道「三步握手」,但是如果问为何需要「三步握手」之类的问题,最后能回答的人手指头也数的过来。
  TCP 为什么需要三步握手?IP 层的通信其实和一般的邮件没什么区别。邮递员只管信封上写的收件人部分,负责把信送到就行,至于是谁发的完全没兴趣。这意味着我们可以伪造发件人来写信。IP 层的通信也存在同样的问题。交换机只管目标 IP,至于来源则毫无兴趣。我们可以使用虚假的「来源 IP」来欺骗对方。于是像 UDP 这样的协议就可以伪造 IP。
  但无论是现实的信件还是 IP 层的通信,它们都存在一个问题:写错发件人会导致对方无法回复。那么只要判断是否能回复成功即可判断 IP 是否被伪造。TCP 的三步握手就解决了这个问题。首先客户端发起连接请求,这时候服务器仅仅是接收到请求,还不能确定请求是否被伪造,于是尝试做一次回复来验证。客户端收到回复后响应,告诉服务器自己是真实的。这样身份就可以确定下来,这期间就完成了传说中的『三次握手』。
  TCP 的坑就在「三步握手」这个过程很慢,于是有人就觉得 UDP 比 TCP 好。UDP 其实就是对 IP 的一个建议封装,如果用 UDP 解决了安全连接的问题,那就相当于造了一个 TCP 出来,实际上还不如直接用 TCP。只有当业务需求不需要 TCP 的那些机制时才适合用 UDP。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^