前言:今天了解一下tcp和udp报文的端口。发现一直以来都只是知道端口用于区分同一IP的服务器的不同服务,已经端口的大小。在查找traceroute的资料的时候,才了解到一些之前没注意到的东西。

(一) 准备知识:端口的介绍

  这一部分本该是介绍端口的作用等知识。但是网上上太多博文了。所以权且借用一篇博文供大家参考——《理解IP和端口》

(二) 端口的范围

  在 TCP 和 UDP(如下图) 的报文结构中都用源端口和目标端口号。

  

  如上图,其长度都是16个bit,所以端口号范围是0到(2^16-1),即 0到 65535。其中0到1023是IANA规定的系统端口,即系统保留窗口。

  More Advanced,

  根据RFC 6335的文档。端口号事实上分为三个范围:

  o 系统端口,即公认的端口,从 0 到 1023 。

  o 用户端口,又称为注册端口,从 1024 到 49151 。

  o 临时端口,又称动态端口(Ephemeral Port),从 49152 到 65535。

(三)各端口范围用途

  ① 系统端口,为系统默认保留端口,用于提供已存在的服务。例如HTTP为80端口,DNS服务为53端口。

  ② 用户端口,即为用户程序自行绑定的端口。一般开发人员开发新服务时,都会绑定此区间内的端口。

  附注:上述端口绑定的服务,在wikipedia上有相应的词条:List of TCP and UDP port numbers

  ③ 临时端口,此类端口,一般没有被公认绑定到那些服务上,可以用于提供任何用途。

(四)下面说一下临时端口

  在一般情况下,当客户端和服务端建立联系时,一般都通过一个四元组(server IP, server port, client IP, client port)来区分服务。除client Port外,其他三个基本都是确定的。对于client Port,除非客户端程序显式地指定一个端口号,否则,IP 栈自动选取一个端口来绑定服务,进而进行服务的区分。在这里,这个端口号就是从临时端口号中选取的。。

  当连接断开后,该端口允许被重用。注意,大部分IP栈不会在该端口释放后,就马上重用它,而是等到临时端口都被使用过了,才会重新使用该端口。这也就解释了为什么每一次运行客户端程序获得的都不是同一个端口。

  另外,不同的操作系统对临时端口的范围规定不一样。由于连接都是由四元组区分,所以临时端口号的数量限制了同一时间内连接同一主机的独立连接的数量。特别地,当使用FTP时,假如同一时间内需要有大量文件同时传输,很容易就出现临时端口号不足,进而IP栈会抛出“地址已经被使用”的错误。

  附:在NCFTP的官网上提供了一份详细介绍临时端口的文档——《The Ephemeral Port Range》,其中就有提到具体的操作系统的临时端口数量。有兴趣可以看一下。

计算机网络 之 TCP和UDP的端口号解析的更多相关文章

  1. RabbitMQ 端口号解析

    转自:https://www.cnblogs.com/liuxingke/articles/9889517.html 端口号解析 12345 - 4369 (epmd), 25672 (Erlang ...

  2. 监听本机tcp和udp的端口

    #!/bin/bash #tcp part port1=`netstat -an|grep LISTEN|egrep "0.0.0.0|:::"|awk '/^tcp/ {prin ...

  3. 计算机网络之tcp与udp的区别

    1.基于连接与无连接: 2.对系统资源的要求(TCP较多,UDP少):3.UDP程序结构较简单:4.流模式与数据报模式 :5.TCP保证数据正确性,可靠稳定,UDP可能丢包:6.TCP保证数据顺序,U ...

  4. 计算机网络 之 TCP协议报文结构

    前言:上学期实训课,由于要做一个网络通信的应用,期间遇到各种问题,让我深感计算机网络知识的薄弱.于是上网查找大量的资料,期间偶然发现了roc大神的博客,很喜欢他简明易懂的博文风格.本文受roc的< ...

  5. TCP和UDP基本原理

    TCP和UDP基本原理 传输层的主要任务就是建立应用程序间的端到端连接,并且为数据传输提供可靠或不可靠的通信服务,TCP/IP协议族的传输层协议主要包括TCP和UDP ,TCP是面向连接的可靠的传输层 ...

  6. TCP与UDP 笔记

    本文整理自:<图解TCP/IP 第5版>作者:[日] 竹下隆史,[日] 村山公保,[日] 荒井透,[日] 苅田幸雄 著译者:乌尼日其其格出版时间:2013-07 TCP提供可靠的通信传输, ...

  7. 第七章 TCP和UDP原理

    一.引入 1.TCP/IP协议族的传输层协议主要包括TCP和UDP 2.TCP是面向连接的可靠的传输层协议.它支持在并不可靠的网络上实现面向连接的可靠的数据传输 3.UDP是无连接的传输协议,主要用于 ...

  8. TCP/IP UDP 协议首部及数据进入协议栈封装的过程

    数据的封装 UDP 封装 TCP 封装 IP 封装 检验和算法 当应用程序用TCP传送数据时,数据被传送入协议栈中,然后逐一通过每一层直到被当作一串比特流送入网络 注: UDP数据TCP数据基本一致. ...

  9. windows 系统防火墙 添加端口号方法

    目前在大部分公司内使用的台式机和部分服务器都采用了Windows操作系统,而我么都知道相当一部分病毒.恶意程序.黑客都是利用扫描端口号,利用开放的端口进行入侵,此时大型企业都会将服务器的系统防火墙打开 ...

随机推荐

  1. 变动事件_DOM2级的变动事件(mutation)

    DOM2级定义了如下变动事件: DOMSubtreeModified:在DOM结构中发生任何变化时触发.这个事件在其他任何事件触发后都会触发. DOMNodeInserted:在一个节点作为子节点被插 ...

  2. laravel 5.1 使用Eloquent ORM 操作实例

    Laravel 的 Eloquent ORM 提供了更优雅的ActiveRecord 实现来和数据库的互动. 每个数据库表对应一个模型文件. 数据库配置 .env文件(也可以直接修改config/da ...

  3. Silverlight样式定义

    方法一.定义在控件内部 <Canvas Background="Red" Height="100" HorizontalAlignment="L ...

  4. multiprocessing、threading、gevent区别

    1. 进程是资源分配的单位 2. 线程是操作系统调度的单位 3. 进程切换需要的资源很最大,效率很低 4. 线程切换需要的资源一般,效率一般(当然了在不考虑GIL的情况下) 5. 协程切换任务资源很小 ...

  5. 20145232 韩文浩 《Java程序设计》第8周学习总结

    教材学习内容总结 14 NIO与NIO2 NIO使用频道(channel)来衔接数据节点,对数据区的标记提供了clear(),rewind(),flip(),compact()等高级操作. 想要取得c ...

  6. 判断页面是app打开还是浏览器打开。cookie

    有个需求需要对页面判断不同的打开方式来最里面的链接进行不同调整, 这样就要分四种情况,app,浏览器X安卓系统,苹果系统,起初是对页面url地址带有的参数(安卓)跟用户代理(苹果)返回值判断navig ...

  7. MessageFormat.format()和String.format()

    MessageFormat 提供了以与语言无关方式生成连接消息的方式.使用此方法构造向终端用户显示的消息. MessageFormat 获取一组对象,格式化这些对象,然后将格式化后的字符串插入到模式中 ...

  8. web-day12

    第12章WEB12-JSP&EL&JSTL篇 今日任务 商品信息的显示 教学导航 教学目标 掌握JSP的基本的使用 掌握EL的表达式的用法 掌握JSTL的常用标签的使用 教学方法 案例 ...

  9. 3D打印切片软件介绍

    熟悉3D打印的流程的人都知道,在建立了3D模型以后要就进行切片,但是什么是切片呢?切片实际上就是讲3D模型转化为3D打印机本身可以执行的代码,G代码,M代码. 3D打印流程 今天我们简要的介绍3款切片 ...

  10. CentOS ntp同步

    新装的CentOS系统服务器可能设置了错误的,需要调整时区并调整时间. 如下是CentOS系统使用NTP来从一个时间服务器同步 把当前时区调整为上海就是+8区,想改其他时区也可以去看看/usr/sha ...