端口号

端口号(port number):16位整数,用来区分不同的进程。

服务器使用的端口号:TCP和UDP定义了一组众所周知的端口(well-known port),用于标识众所周知的服务。

客户端使用的端口号:通常使用短期存活的临时端口(ephemeral port)。这些端口号通常由传输层协议自动赋予客户。客户一般不关心其临时端口的具体值,而只需确信它在所在主机中是唯一的就行。传输层协议的代码确保这种唯一性。

端口号被划分成三段:

(1)众所周知的端口为0-1023. 这些端口由IANA分配和控制。可能的话,相同的端口号就分配给TCP、UDP和SCTP的同一给定服务。例如,端口号80不论是TCP还是UDP都被赋予Web服务器,尽管目前它所有的实现都单纯使用TCP。

(2)已登记的端口(registered port)为1024-49151. 这些端口不受IANA控制,不过由IANA登记并提供它们的使用情况清单,以方便整个群体。可能的话,相同端口号也分配给TCP和UDP的同一给定服务。

(3)动态的(dynamic)或私用的(private)端口:49152-65535. IANA不管这些端口,它们就是我们所称的临时端口。(49152这个魔数是65535的四分之三。)

注意:

  • UNIX系统有保留端口(reserved port)的概念,指的是小于1024的任何端口。这些端口只能赋予超级用户进程的套接口。所有众所周知的端口都是保留端口,因此分配这些端口的服务器启动时必须具有超级用户的特权。
  • 由于历史原因,源自Berkeley的实现(从4.3BSD开始)曾在1-24-5000范围内分配临时端口。
  • 有少数客户(而不是服务器)需要一个保留端口用于客户/服务器的认证:rlogin和rsh客户就是常见的例子。这些客户调用库函数rresvport创建一个TCP套接口,并给它分配513-1023范围内的一个未使用的端口。

 

套接口对和套接口

一个TCP连接的套接口对(socket pair)是一个定义该连接的两个端点的四元组:本地IP地址、本地TCP端口号、远地IP地址、远地TCP端口号。一个套接口对唯一标识互联网上的一个TCP连接。

就SCTP而言,一个关联由一组本地IP地址、一个本地端口、一组远地IP地址、一个远地端口标识。

标识每个端点的两个值(IP地址和端口号)通常称为一个套接口(socket)。

举例来说,应用程序通过bind函数为TCP、UDP或SCTP套接口指定本地IP地址和本地端口号。

UNIX网络编程读书笔记:端口号、套接口对和套接口的更多相关文章

  1. UNIX网络编程--读书笔记

    会集中这段时间写UNIX网络编程这本书的读书笔记,准备读三本,这一系类的文章会不断更新,一直会持续一个月多,每篇的前半部分是书中讲述的内容,每篇文章的后半部分是自己的心得体会,文章中的红色内容是很重要 ...

  2. UNIX网络编程读书笔记:简介

    认知套接口编程接口 理解原始套接口(raw socket)的概念   值得注意的是,客户和服务器是典型的用户进程,而TCP和IP协议则通常是系统内核协议栈的一部分. 上图中在TCP和UDP之间留有间隙 ...

  3. UNIX网络编程读书笔记:基本TCP套接口编程

    编写一个完整的TCP客户和服务器程序所需要的基本套接口函数: 1.socket函数(客户端.服务器端都必须调用) 参数family指明协议族(family),该参数也往往被称为协议域(domain). ...

  4. UNIX网络编程读书笔记:基本UDP套接口编程

    概述 使用UDP编写的一些流行的应用程序有:DNS(域名系统).NFS(网络文件系统)和SNMP(简单网络管理协议). 如下图所示,给出了典型的UDP客户/服务器程序的函数调用: 客户不与服务器建立连 ...

  5. UNIX网络编程读书笔记:套接口选项

    概述 有很多方法来获取和设置影响套接口的选项: getsockopt和setsockopt函数 fcntl函数 ioctl函数 getsockopt和setsockopt函数 这两个函数仅用于套接口. ...

  6. UNIX网络编程读书笔记:原始套接口

    概述 应用程序可以绕过传输层而直接使用IPv4和IPv6,这称为原始套接口(raw socket).http://www.cnblogs.com/nufangrensheng/p/3583435.ht ...

  7. UNIX网络编程读书笔记:基本SCTP套接口编程

    概述 SCTP是一个较新的传输协议,于2000年在IETF得到标准化(TCP是在1981年标准化的).它最初是为满足不断增长的IP电话市场设计的:具体地说,就是穿越因特网传输电话信令. SCTP是一个 ...

  8. Unix 网络编程 读书笔记3

    第四章 基本tcp 套接口编程 注意区分AF_XXX 和PF_XXX,AF代表address family, PF代表protocol family. 1 socket 函数 2 connect 函数 ...

  9. Unix 网络编程 读书笔记1

    第一章: C/C++语言提供两种不同的编程模式:IPL32和PL64.► IPL32 ● 表示integer/pointer/long三种数据类型是32位(4个字节),在这种模式下,提供32位的地址空 ...

随机推荐

  1. Python中yield和yield from的用法

    yield python中yield的用法很像return,都是提供一个返回值,但是yield和return的最大区别在于,return一旦返回,则代码段执行结束,但是yield在返回值以后,会交出C ...

  2. 【BZOJ 3238】 3238: [Ahoi2013]差异(SAM)

    3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 3047  Solved: 1375 Description In ...

  3. 又见Python<2>:如何安装第三方库(Windows)

    使用python进行数据分析或者数据处理时,往往需要使用一些库,而使用库之前必须安装它.Anaconda内置了很多常用的第三方库,可以满足绝大部分需求,比如numpy.pandas.matplotli ...

  4. 2017haoi总结

    暴力都写不对的蒟蒻QAQ 现在只看了上午的第二题..   AM.T2 写了40分的记忆化搜索,最差复杂度大概是n^3,100以下应该是稳过的..通过递归返回[l+1,r]的答案,l=r特判,int函数 ...

  5. Python中进程无法结束的处理办法

    1.方法一    http://hi.baidu.com/javalang/item/72fabf2359a30b464799625e 也就是说当线程使用start方法运行起来后,只有当run方法运行 ...

  6. Linux下简单分析请求有没有进到本机的工具tcpdump(网络接口的数据包的头信息)

    可以通过这个工具快速分析出一个请求到底有没有进入到本机.信息有点简单,对于前期的分析比较有帮助.而对于详细的分析可以借助iptables的raw表进行日志分析. 参考: http://man.linu ...

  7. HDU 4696 Answers (2013多校10,1001题 )

    Answers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total S ...

  8. Use an LM317 as 0 to 3V adjustable regulator

    Most engineers know that they can use an inexpensive, three-terminal adjustable regulator, such as F ...

  9. 【实例图文详解】OAuth 2.0 for Web Server Applications

    原文链接:http://blog.csdn.net/hjun01/article/details/42032841        OAuth 2.0 for Web Server Applicatio ...

  10. 使用wget提示无法建立SSL连接

    wget 下载URL 提示无法建立SSL连接 解决方法: 原命令上加上" --no-check-certificate" 这是因为wget在使用HTTPS协议时,默认会去验证网站的 ...