Telnet、Socket底层原理详解
telnet 协议在底层使用的是 TCP 协议 进行通信
telnet 底层依赖的协议:TCP
telnet 是一种基于 TCP/IP 协议族 的应用层协议,其底层通信完全依赖 TCP 协议(传输层)。
- 当你执行
telnet [IP] [端口]
时,telnet 客户端会与目标 IP 的指定端口建立 TCP 连接(三次握手),连接建立后,双方通过 TCP 协议传输数据(字节流)。
- 这也是为什么 telnet 通常用于测试 TCP 端口 的开放状态(如 80、443、22 等)—— 因为它本质上是在验证 TCP 连接能否成功建立。
与 其它(HTTPS )协议的关系
# 四层模型
探测逻辑:
TCP: 先通过三次握手建立稳定连接,在基于这个连接进行双向的字节流传输(保证数据有序、不丢失)
UDP:不需要先建立连接,而是直接通过发送数据包并等待响应来判断
Socket协议:
telnet协议可以与上层进行通信,不可以与同层协议UDP协议通信
无法通过telnet协议来探测UDP端口,测试UDP端口可以通过工具NC、namap
telnet: 底层是通过TCP协议,通信流程:telnet应用-》调用Socket API-》通过TCP协议通信
为什么Telnet底层调用Socket API来进行通信为什么还不与UDP协议进行通信呢
解释: telnet虽然和Socket API进行了绑定,但是从设计就专门与TCP协议进行了绑定
传输层的下一层是网络层:
网络层的协议:IP、ICMP( ping 命令基于这个协议 )、arp(网络层IP地址转为数据链路层的MAC地址)、RIP(路由信息协议)、OSPF(开放最短路径优先)
网络层不存在端口概念(它的协议IP、ICMP不需要端口来表示),端口是传输层的标识
四层模型下层兼容上层,那网络层是否可以与传输层的协议端口进行通信呢
ping 报文本身不支持指定端口、tcp/udp报文存在端口字段
解释:ping 不可以探测端口开放,只能探测主机存活
# Socket核心 对底层协议的抽象和封装
为操作系统提供API,它隐藏tcp/udp 的复杂细节,同时Socket通过支持其底层依赖的TCP协议--HTTPS协议等应用层协议
不支持向下兼容,不能通过socket协议封装HTTP协议与传输层的TCP协议来进行通信