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

2020-09-18  本文已影响0人  看影成痴

文集

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 Network.jpg

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

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

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

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

4. 网络模型

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

网络模型.png

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

5. 协议

5.1 HTTP(S)

序号 方法 描述
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工作原理.png

5.2 TCP

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

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

TCP报文首部格式:

TCP首部格式.jpg

三次握手和四次挥手

三次握手.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。这么做有两个理由:

5.3 UDP

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

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

UDP首部格式:

UDP首部格式.png

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

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

5.4 TCP与UDP差别

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

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

UDP:

TCP:

协议 应用层协议
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

IPv6

IPv6数据报格式.png

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

上一篇 下一篇

猜你喜欢

热点阅读