今天我想用一种通俗易懂的方式给非计算机专业的同学解释好tcp通讯
咋们就先拿现实中的地图举例子,首先大家都知道tcp通讯中必须严格区分,服务器端
和客户端。
当我们作为客户端的时候,我们要连接服务器端,怎么连接呢,我们首先得找到服务器的位置,在地图中找位置,是不是就得要用到坐标,ip地址就是一台计算机在网络地图中的坐标,
有了这个坐标,我们就可以将它作为终点导航过去。
但是导航过去又有一个问题了,那么多人都去那个地方,服务器怎么知道是不是我呢,于是这时,服务器想出一个办法,端口号氤氲而生,服务器说,做摩托来的,就是我的客户端。这里的摩托,就是端口号。
IP地址加上端口号,成为我们所说的套接字,有了这个套接字才有我们的socket通讯,网络编程。
对于计算机系统来说,1到1000的端口号均被用于电脑需要网络的基础服务。如下,
0 端口:无效端口,通常用于分析操作系统
1 端口:传输控制协议端口服务多路开关选择器
2 端口:管理实用程序
3 端口:压缩进程
5 端口:远程作业登录
7 端口:回显
9 端口:丢弃
11 端口:在线用户
13 端口:时间
17 端口:每日引用
18 端口:消息发送协议
19 端口:字符发生器
20 端口:FTP 文件传输协议(默认数据口)
21 端口:FTP 文件传输协议(控制)
22 端口:SSH 远程登录协议
23 端口:telnet(终端仿真协议),木马 Tiny Telnet Server 开放此端口
24 端口:预留给个人用邮件系统
25 端口:SMTP 服务器所开放的端口,用于发送邮件
27 端口:NSW 用户系统 FE
29 端口:MSG ICP
31 端口:MSG 验证,木马 Master Paradise、HackersParadise 开放此端口
33 端口:显示支持协议
35 端口:预留给个人打印机服务
37 端口:时间
38 端口:路由访问协议
39 端口:资源定位协议
41 端口:图形
42 端口:主机名服务
43 端口:who is 服务
44 端口:MPM(消息处理模块)标志协议
45 端口:消息处理模块
46 端口:消息处理模块(默认发送口)
47 端口:NI FTP
48 端口:数码音频后台服务
49 端口:TACACS 登录主机协议
50 端口:远程邮件检查协议
51 端口:IMP(接口信息处理机)逻辑地址维护
52 端口:施乐网络服务系统时间协议
53 端口:dns 域名服务器
54 端口:施乐网络服务系统票据交换
55 端口:ISI 图形语言
56 端口:施乐网络服务系统验证
57 端口:预留个人用终端访问
58 端口:施乐网络服务系统邮件
59 端口:预留个人文件服务
60 端口:未定义
61 端口:NI 邮件
62 端口:异步通讯适配器服务
63 端口:whois++
64 端口:通讯接口
65 端口:TACACS 数据库服务
66 端口:Oracle SQL*NET
67 端口:引导程序协议服务端
68 端口:引导程序协议客户端
69 端口:小型文件传输协议
70 端口:信息检索协议
71 端口:远程作业服务
72 端口:远程作业服务
73 端口:远程作业服务
74 端口:远程作业服务
75 端口:预留给个人拨出服务
76 端口:分布式外部对象存储
77 端口:预留给个人远程作业输入服务
78 端口:修正 TCP
79 端口:查询远程主机在线用户等信息
80 端口:http,用于网页浏览,木马 Executor 开放此端口
等:
就这样,我们找到了服务器,并与它深情握手,互赠礼物,就完成了两台设备间的tcp通讯。
当我们作为服务器端的时候,我们要做什么呢,我们是不是得把我们的坐标,告诉客户端,这里还有一点,非常好理解,是不是很多人都可以同时来找你,但是他们如果要跟你互赠礼物,是不是只找你,所以我们的服务器可以被多个客户端连接,但是一个客户端只能连接一台服务器。咋们把坐标告诉客户端,还得约定一种交通方式把,这人来人往的,好,现在坐飞机的,5555(端口号)是我的客户端,坐飞机来找到我的,就可以连接我,跟我握手互换礼物。在这里还得提一下,我们作为客户端,地址坐标发出来之后,我不能换个地方吧(更换ip,在网络地图上的位置就会更改),那到我原位置的客户端还能找到我吗,显然是不能的,那更加不能跟我互换礼物,这样就不能作为一次成功的tcp通讯。我也不能睡着了吧(服务器关机),就算它坐飞机到达我的位置,他也发现不了我,也不能正常给我送礼物。
所以说,一次正常的tcp通信流程需要什么,首先服务器打开,选择端口号。
然后客户端打开,确认服务器的ip,和协商好的端口号,然后就开始导航过去,
找到了服务器端之后,先握3次手(3次握手),这是为了安全起见,你看现在在疫情期间,出门洗手,回来洗手,这不也是为了安全吗。然后便开始互赠礼物(传输数据)。
附录:在实际连接过程中,端口号决定了你的数据发送给对方机器的哪一个程序,只有端口号对应,才能在相应程序中接受到数据。腾讯qq的端口号是8000,我们挂着qq,然后声明服务器端,端口号8000是不能成功的,会显示,端口号被占用,因为一个联网的程序使用的端口号是唯一的,不能重的。
今天就到这,大家好好看看代码。
新手友好大师:5分钟弄懂tcp
最新推荐文章于 2024-04-27 05:03:46 发布