4-2:TCP协议之详解端口号

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4-2:TCP协议之详解端口号相关的知识,希望对你有一定的参考价值。

一:端口号的定义

数据链路和IP中的地址,分别指的是MAC地址和IP地址,前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。

在传输层中也有类似的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序,因此它也被称为程序地址

二:根据端口号识别应用

一台计算机上可以同时运行多个程序,比如web浏览器,ssh客户端等等。传输层正是利用这些端口号识别本机中正在进行通信的应用程序,并准确传输数据。(注意是用于网络通信的程序才会分配端口号,不是所有应用程序
在这里插入图片描述

三:通过IP地址、端口号、协议号进行通信识别

首先需要明确的是:仅仅通过端口号识别某一个通信是远远不够的

如下图所示,①和②的通信是在两台计算机上进行的。他们的目标端口号都是80。如果打开两个web浏览器,同时访问两个服务器上不同搞得页面,就会在这个浏览器和服务器之间产生类似于①和②的的通信。在这种情况下也必须严格区分这两个通信,因此可以根据源端口号区分

在这里插入图片描述
再比如,上图中①和③的目标端口号和源端口号完全一致,但是他们各自的源IP地址不同。
此外还有一种情况就是IP地址和端口全部一样,只是协议号(表示上层是TCP或UDP的一种编号)不同,这种情况下,也会认为是两个不同的通信

因此,TCP/IP或UDP/IP通信中最常采用5个信息区分一个通信:

  • 源IP地址
  • 目标IP地址
  • 协议号
  • 源端口号
  • 目标端口号

只要其中有一项不同,便可认为是不同的通信

四:端口号如何确定

在实际进行通信时,要实现确定好端口号,方式有以下两种

(1)标准既定的端口号(静态方法)

该种方法为每个应用程序指定端口号,但不能随意使用任何一个端口号,每个端口号都有其对应的使用目的

例如,HTTP,TELNET等广为人知的协议中使用的端口号就是固定的,这些端口号也被称为知名端口号(Well-Known Port Number)。知名端口号一般由0到1023的数字分配而成,应用程序应该避免使用知名端口号而造成冲突。除了知名端口号外,还有一些端口号也被正式注册,他们分布在1024到49151的数字之间。

  • ssh:22
  • ftp:21
  • telnet:23
  • http:80
  • https:443

(2)时序分配法(动态方法)

使用这种方法时,服务端有必要监听端口号,但是接受服务的客户端没有必要确定端口号。

此时,客户端应用层可以完全不用自己设置端口号,而直接交给操作系统进行分配,这样可以保证端口号不冲突。动态分配的端口号取值范围为49152到65535之间

五:有关命令

**netstat:**查看网络状态
常用选项如下:

  • n:拒绝显示别名,能显示数字就显示数字
  • l:仅列出有在监听的服务状态
  • p:显示建立相关链接的程序名
  • t:仅显示tcp相关选项
  • u:仅显示udp相关选项
  • a:显示所有选项

pidof:查看服务器进程id,pidof 进程名

以上是关于4-2:TCP协议之详解端口号的主要内容,如果未能解决你的问题,请参考以下文章

[linux] Linux网络之TCP协议详解

TCP 详解

详解TCP协议

TCP/IP详解学习笔记-UDP协议

TCP/IP详解UDP用户数据报协议

TCP/IP协议簇之传输层