端口号与网络协议理解

端口包括物理端口和逻辑端口。物理端口是用于连接物理设备之间的接口,例如如ADSL Modem、集线器交换机路由器上用 于连接其他网络设备的接口,如RJ-45端口、SC端口等等。逻辑端口是逻辑上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。由于物理端口和逻辑端口数量较多,为了对端口进行区分,将每个端口进行了编号,这就是端口号。

端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区 分不同的服务的。

服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet号分配机构(InternetAssignedNumbersAuthority,IANA)来管理。

客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。大多数TCP/IP实现给临时端口分配1024~5000之间的端口号。大于5000的端口号是为其他服务器预留的(Internet上并不常用的服务)。(摘自百度百科)

使用wireshark软件从网卡上随便抓一些包来观看,可以清楚的看到这些包的结构是固定的分层结构。例如下图是一个dns协议的数据包,蓝色方框代表了它的层级结构,从下往上依次封装,最下面是dns协议,其中包含了内容负载;上面一层为udp包头8个字节,我们都知道dns数据包是基于udp传输的,在udp中我们可以看到红线标识的源目端口号,这里源端口号53是dns服务器公开的端口,目的端口61684是我们客户机随机分配的端口号(临时短暂存在),这个数据包是dns服务器对我们的请求进行回复的应答包;再上面是ip包头20个字节,其中红线标识了协议号为udp(17),表明在网络层需要对udp数据包进行封装,也就是加上ip包头;最上面是以太帧,类型为IP,对IP数据包进行封装,加入以太帧头部,主要是加入传输时需要用到的物理地址。其他的协议也是类似的,比如说ICMP数据包(注意它没有端口号),它只是基于IP,需要在网络层加入IP头部。层次从下往上依次是icmp数据(包含icmp头部和数据负载),IP头部,以太帧头部。图就不贴了,在cmd中ping个网址就能抓到。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值