iOS开发之网络通信(1)—— 计算机网络

文集

iOS开发之网络通信(1)—— 计算机网络
iOS开发之网络通信(2)—— HTTP(S)
iOS开发之网络通信(3)—— XML & JSON
iOS开发之网络通信(4)—— socket
iOS开发之网络通信(5)—— CocoaAsyncSocket
iOS开发之网络通信(6)—— AFNetworking & Alamofire

目录

  1. 概念
  2. 分类
    2.1局域网
    2.2 城域网
    2.3 广域网
    2.4 无线网
  3. 各种网: 互联网 因特网 以太网 万维网
  4. 网络模型
  5. 协议
    5.1 HTTP(S)
    5.2 TCP
    5.3 UDP
    5.4 TCP与UDP差别
    5.5 IP
  6. 其他
    6.1 ISP
    6.2 端口

1. 概念

网, 本义指一种用绳线编织成的捕鱼工具. 后来引申指像网一样的东西, 又引申指像网一样纵横交错的系统或组织.

计算机网络, 也称计算机通信网, 利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来, 以功能完善的网络软件及协议实现资源共享和信息传递的系统.

2. 分类

虽然网络类型的划分标准各种各样, 但是从地理范围划分是一种大家都认可的通用网络划分标准. 按这种标准可以把各种网络类型划分为

  1. 局域网
  2. 城域网
  3. 广域网
  4. 无线网

2.1局域网

局域网 (Local Area Network;LAN), 指在局部地区范围内的网络, 一般位于一个建筑物或一个单位内, 它所覆盖的地区范围较小, 一般来说可以是几米至10公里以内. 局域网在计算机数量配置上没有太多的限制, 少的可以只有两台, 多的可达几百台. 局域网可以实现文件管理、应用软件共享、打印机共享等功能.

LAN.png

2.2 城域网

城域网 (Metropolitan Area Network;MAN), 这种网络一般来说是在一个城市, 但不在同一地理小区范围内的计算机互联. 这种网络的连接距离可以在10~100公里. MAN与LAN相比扩展的距离更长, 连接的计算机数量更多, 在地理范围上可以说是LAN网络的延伸. 在一个大型城市或都市地区, 一个MAN网络通常连接着多个LAN网. 城域网多采用ATM技术做骨干网, ATM是一个用于数据、语音、视频以及多媒体应用程序的高速网络传输方法. ATM的最大缺点就是成本太高, 所以一般在政府城域网中应用, 如邮政、银行、医院等.

MAN.png

2.3 广域网

广域网 (Wide Area Network;WAN), 又称外网、公网, 是连接不同地区局域网或城域网计算机通信的远程网. 其所覆盖的范围比城域网 (MAN) 更广, 它一般是在不同城市之间的LAN或者MAN网络互联, 地理范围可从几百公里到几千公里. 它能连接多个地区、城市和国家, 或横跨几个洲并能提供远距离通信, 形成国际性的远程网络. 广域网在一个区域范围里超过集线器所连接的距离时, 必须要通过路由器来连接.

WAN.png

2.4 无线网

有线传输媒介主要有三种: 同轴电缆、双绞线和光纤; 无线传输媒介主要有微波、无线电、激光和红外线等.
根据网络覆盖范围的不同, 可以将无线网络划分为

  • 无线广域网 (Wireless Wide Area Network;WWAN)
  • 无线城域网 (Wireless Metropolitan Area Network;WMAN)
  • 无线局域网 (Wireless Local Area Network;WLAN)
  • 无线个人局域网 (Wireless Personal Area Network;WPAN)
Wireless Network.jpg

3. 各种网: 互联网 因特网 以太网 万维网

拜中文译音所赐, 我们常常困扰于这些名词之中, 有时傻傻分不清楚, 毕竟它们之间那么相似——都带有"网"字. 但如果从英文角度去看, 问题就简单些了: 他们不会将局域网和万维网混淆, 也不会将以太网和因特网混淆, 而更多的是对"Internet/internet"、"LAN/MAN/WAN"的困惑.

前面分类中我们已经介绍过局域网/城域网/广域网/无线网, 这些都是从地理范围划分的网络, 是一种泛称, 并不特指某一个网络. 因此我们很容易和本小节的"各种网"区分开来.

  • 互联网因特网
    不管是互联网还是因特网, 都是舶来品. 通常将小写 i 的 internet 意译为互联网; 而将大写 I 的 Internet 音译成因特网. 所以我们在讨论互联网和因特网的区别的时候, 实际上讨论的是 internet 和 Internet 的区别.
    那么 internet 和 Internet 到底有什么区别?
    当然有了, 一个大写一个小写. . 除此之外, 我认为是没有什么好区别的, 因此我把它们放在一起讨论.
    下面引用维基百科的论述:

起初 internet 是 internetwork 的简称, 一个普通名词, 通常指相互连接的全球计算机网络系统, 当然它也可以指任何一组较小的网络. 由于因特网协议套件 (Internet protocol suite) 在20世纪80年代的广泛部署, 当 internet 开始被广泛使用时, 大多数权威机构和出版物都把它当作一个大写的专有名词 Internet . 这反映了英语中的一种趋势, 即用大写表示新术语, 当人们熟悉它们时, 就改为小写 .
可以简单理解为, internet 起初是个普通名词, 后来人们为了推广特地改为专有名词 Internet , 再后来已经人尽皆知/尽人皆知了, 干脆又开始改为小写的了...
故, 我们使用大小写都可以.

  • 以太网
    以太网 (Ethernet) 不是一种网络, 而是一种计算机局域网技术. IEEE组织的IEEE 802.3标准制定了以太网的技术标准, 类似的标准还有我们熟悉的一个基于IEEE 802.11标准的无线局域网技术——WiFi. 以太网是目前应用最普遍的局域网技术, 取代了其他局域网技术如令牌环、FDDI和ARCNET.

  • 万维网
    万维网 (World Wide Web;WWW、3W、Web) 也不是一种网络, 而是基于客户端/服务器 (C/S) 方式的信息发现技术和超文本技术的综合. 在服务器端主要表现为通过超文本标记语言(HTML)把信息组织成为图文并茂的超文本. 通过Internet访问技术(主要是TCP/IP), 服务器将信息传递给客户端, 比如我们所熟悉的客户端的一种实现——Web网页.

4. 网络模型

为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI模型(Open System Interconnection)。它将计算机网络体系结构的通信协议划分为七层。除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议. 如图:

网络模型.png
  • 应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文。
  • 表示层 :数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。
  • 会话层 :建立及管理会话。
  • 传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。
  • 网络层 :为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。
  • 数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
  • 物理层 :考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

注:五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。

5. 协议

5.1 HTTP(S)

  • 简介
    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写, 是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
    HTTP基于TCP/IP通信协议来传递数据 (HTML文件, 图片文件, 查询结果等), 默认端口号为80。
    HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

  • 请求报文结构
    客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

    请求结构.png

  • 请求方法
    根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
    HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
    HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新。
  • HTTPS
    HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
    HTTPS 默认工作在 TCP 协议443端口.
    HTTP与HTTPS区别:

    1. HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
    2. 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
    3. HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
    4. http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
    5. HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,HTTPS 比 HTTP 要更耗费服务器资源。

    工作原理:

https工作原理.png

5.2 TCP

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议.

TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

TCP报文首部格式:

TCP首部格式.jpg
  • 源端口:源端口和IP地址的作用是标识报文的返回地址。
  • 目的端口:端口指明接收方计算机上的应用程序接口。
  • 序号:用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
  • 确认号:期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。
  • 数据偏移:指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。
  • 确认 ACK :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
  • 同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。
  • 终止 FIN :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。
  • 窗口:窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。

三次握手和四次挥手

三次握手.jpg

建立连接过程 (三次握手):

三次握手.jpg

假设 A 为客户端,B 为服务器端。

  1. 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。
  2. A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。
  3. B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。
  4. A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。
  5. B 收到 A 的确认后,连接建立。

三次握手的原因
第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。

断开连接过程 (四次挥手):

四次挥手.jpg

以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。

  1. A 发送连接释放报文,FIN=1。
  2. B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据。
  3. 当 B 不再需要连接时,发送连接释放报文,FIN=1。
  4. A 收到后发出确认,进入 TIME-WAIT 状态,等待 2 MSL(最大报文存活时间)后释放连接。
  5. B 收到 A 的确认后释放连接。

四次挥手的原因
客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:

  • 确保最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。
  • 等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。

5.3 UDP

用户数据报协议(UDP,User Datagram Protocol) 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。

UDP用户数据报协议,是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。

UDP首部格式:

UDP首部格式.png

首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。

伪首部并非TCP&UDP数据报中实际的有效成分。伪首部是一个虚拟的数据结构,其中的信息是从数据报所在IP分组头的分组头中提取的,既不向下传送也不向上递交,而仅仅是为计算校验和。

5.4 TCP与UDP差别

这是传输层的两个协议,先说一下传输层的两大功能:
复用:在发送端,多个应用进程公用一个传输层;
分用:在接收端,传输层会根据端口号将数据分给不同的应用进程。

传输层和网络层的区别:
网络层为不同的主机提供通信服务,传输层为不同应用进程提供通信服务。
网络层只对报文头部进行差错检测,而传输层对整个报文进行差错检测。

UDP:

  • 无连接
  • 不可靠(不能保证都送达)
  • 面向报文(UDP数据传输单位是报文,不会对数据进行拆分和拼接操作,只是给上层传来的数据加个UDP头或者给下层来的数据去掉UDP头)
  • 没有拥塞控制,始终以恒定速率发送数据
  • 支持一对一、一对多、多对多、多对一
  • 首部开销小,只有8字节

TCP:

  • 有连接
  • 可靠的
  • 面向字节流
  • 全双工通信,TCP两端既可以作为发送端也可以作为接收端
  • 连接的两端只能是两个端点,即一对一,不能一对多
  • 至少20个字节,比UDP大的多
协议 应用层协议
TCP HTTP(超文本传送协议)、FTP(文件传送协议)、SMTP(简单邮件传送协议)、TELNET(远程终端协议)
UDP DNS(域名系统)、TFTP(简单文件传送协议)、RIP(路由信息协议)、DHCP(动态主机配置协议)、SNMP(简单网络管理协议)、NFS(网络文件系统)、IGMP(网际组管理协议)

5.5 IP

IP协议
IP协议是网络互联协议(Internet Protocol)的简称,是TCP/IP协议簇中两个重要的协议之一,是TCP/IP协议簇的运作核心。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
IP是整个TCP/IP协议族的核心,也是构成互联网的基础。IP位于TCP/IP模型的网络层,对上可载送传输层各种协议的信息,例如TCP、UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。

IP协议.png

IP地址
IP地址 (Internet Protocol Address) 是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。

IP地址有IPv4和IPv6。
IPv4只有4段数字 (32位地址长度),每一段最大不超过255,只有大约43亿个地址。由于互联网的蓬勃发展,IP位址的需求量愈来愈大,使得IP位址很快耗尽 (卒于2019年11月26日)。为了扩大地址空间,拟通过IPv6重新定义地址空间。
IPv6采用128位地址长度,几乎可以不受限制地提供地址。按保守方法估算IPv6实际可分配的地址,整个地球的每平方米面积上仍可分配1000多个地址。

随着互联网的飞速发展和互联网用户对服务水平要求的不断提高,IPv6在全球将会越来越受到重视。实际上,并不急于推广IPv6,只需在现有的IPv4基础上将32位扩展8位到40位,即可解决IPv4地址不够的问题。这样一来可用地址数就扩大了256倍。

IP路由
互联网是由许多个网络连接所形成的大型网络。如果要在互联网中传送IP信息包,除了确保网络上每个设备都有一个唯一的IP地址之外,网络之间还必须有传送的机制,才能将IP信息包通过一个个的网络传送到目的地。此种传送机制称为IP路由。
各个网络通过路由器相互连接。路由器的功能是为IP信息包选择传送的路径。换言之,必须依靠沿途各路由器的通力合作,才能将IP信息包送到目的地。在IP路由的过程中,由路由器负责选择路径,IP信息包则是被传送的对象。

IP路由.png

IP地址与IP路由是IP信息包传送的基础。此外,IP信息包传送时还有一项很重要的特性,即使用非连接式的传送方式。非连接式的传送方式是指IP信息包传送时,源设备与目的设备双方不必事先连接,即可将IP信息包送达。即源设备完全不用理会目的设备,而只是单纯地将IP信息包逐一送出。至于目的设备是否收到每个信息包、是否收到正确的信息包等,则由上层的协议(例如TCP)来负责检查。

IPv4

IPv4数据报格式.png
  • 版本 : 该字段定义IP协议版本 (IPv4和IPv6),负责向处理机所运行的IP软件指明此IP数据报是哪个版本,所有字段都要按照此版本的协议来解释。如果计算机使用其他版本,则丢弃数据报。
  • 首部长度 : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为首部固定长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
  • 区分服务 : 用来获得更好的服务,一般情况下不使用。
  • 总长度 : 包括首部长度和数据部分长度。
  • 标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
  • 标记 :略。
  • 片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。
  • 生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
  • 协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。
  • 首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。
  • 源地址 :源主机IP地址。
  • 目的地址 :目标主机IP地址。

IPv6

IPv6数据报格式.png
  • 版本号 :表示协议版本.值为6
  • 流量等级 :主要用于QoS
  • 流标签 :用来标识同一个流里面的报文
  • 载荷长度 :表明该IPv6包头部后包含的字节数,包含扩展头部
  • 下一报头 :该字段用来指明报头后接的报文头部的类型,若存在扩展头,表示第一个扩展头的类型,否则表示其上层协议的类型,它是IPv6各种功能的核心实现方法
  • 跳数限制 :该字段类似于IPv4中的TTL,每次转发跳数减一,该字段达到0时包将会被丢弃
  • 源地址 :标识该报文的来源地址
  • 目的地址 :标识该报文的目的地址

6. 其他

6.1 ISP

ISP.jpg

互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。

互联网供应商所提供的服务可以很广泛。除了为一般企业及私人互联网浏览所提供的拨号连线、综合业务数字网(ISDN)、DSL、缆线调制解调器、专线(LeasedLine)等上网服务外,还可以包括主机托管(Colocation)、电子邮件(E-Mail)、网页寄存(webhosting)等服务。

中国五大基础运营商:
  中国电信:拨号上网、ADSL
  中国网通:拨号上网、ADSL
  中国铁通:拨号上网、ADSL
  中国移动:GPRS及EDGE无线上网
  中国联通:GPRS及CDMA无线上网

6.2 端口

TCP和UDP都需要有源端口和目的端口。端口用16位来表示,即一个主机共有65536个端口。序号小于256的端口称为通用端口,如FTP是21端口,WWW是80端口等。端口用来标识一个服务或应用。一台主机可以同时提供多个服务和建立多个连接。端口(port)就是传输层的应用程序接口。应用层的各个进程是通过相应的端口才能与运输实体进行交互。服务器一般都是通过人们所熟知的端口号来识别的。

常用的熟知端口

应用程序 FTP TELNET SMTP DNS TFTP HTTP SNMP SNMP(trap)
熟知端口 21 23 25 53 69 80 161 162

端口分类

  1. 公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
  2. 注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
  3. 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。

引用

https://www.cnblogs.com/hansermukk/p/11138558.html
https://www.cnblogs.com/maybe2030/p/4781555.html#_label2
https://blog.csdn.net/hhhhhsw/article/details/81212283
https://www.cnblogs.com/xdyixia/p/9275246.html

你可能感兴趣的:(iOS开发之网络通信(1)—— 计算机网络)