客户端毗邻的是服务端的80端口,所有的数据都发送给80端口,这个时刻,tcp协议中的端口是80。然则服务端只是监听80端口,然后使用一个新的socket和客户端通讯,新的socket端口是重新分配的,假设端口号分配的是12345,服务端将响应数据从这个端口发送出去,长毗邻建立起来之后,服务端重新的12345端口接受数据,然则客户端照样将数据发送到80端口(由于客户端建立套接字的时刻,只知道服务端公然的端口是80),那么服务端是怎么在新的12345端口上获取数据的?换句话说,客户端tcp协议的目的端口是80,12345端口若何收到发送到80端口的数据?
题主犯了“唯心主义”错误,依附天马行空的想象力,服务器应该用一个全新的端口号(不同于80端口)来服务客户端,到最后自己嫌疑自己。。。首先,服务器依然会使用80端口号来服务客户端,这样当服务器响应的报文到达客户端时,客户端会检查四米组,源IP、目的IP、源端口、目的端口,看看是否和发出去的报文完全匹配。将吸收到四米组计算出响应的Socket ID,用ID做为关键字检索Socket数据库:
检索乐成,用检索到的Socket来处置吸收报文
检索失败,抛弃处置
很显然,若是服务器不使用80端口做为源端口,客户端将检索失败,抛弃处置。这样TCP毗邻永远都无法建立起来。实在服务器的处置和客户端大同小异,分三个逻辑分支:
检索乐成,用检索到的Socket来处置吸收报文
检索失败,服务器侦听(listen)目的端口,建立全新的Socket服务客户
检索失败,服务器没有侦听目的端口,抛弃处置
客户端与服务器端的身份并没有自然差异,差异就在于是否在某个端口侦听,愿意为别人提供服务。若是客户端在某个端口侦听,那它已经是服务器了,要接纳服务器三分支的逻辑剖析问题。
对于这些基础知识点,最好的方式照样找本经典的课本,踏踏实实地学习,站在前人的肩膀上,能让自己看得更高、更远!
1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入
2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各种产物的最新流动,优惠券领取点击进入
3.广告同盟: 整理了现在主流的广告同盟平台,若是你有流量,可以作为参考选择适合你的平台点击进入
链接: http://www.fly63.com/article/detial/4189