iOS大法好多线程GCD 队列 异步 网络 socket block 循环引用编程

浅谈网络编程

2016-06-23  本文已影响842人  _凉风_

引言

网络学习的核心内容就是网络协议的学习

Paste_Image.png

网络层次的划分

为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络

  • 国际标准化组织(ISO)在 1978 年提出了“开放系统互联参考模型”
    即著名的 OSI/RM 模型(Open System Interconnection/Reference Model)
  • 除了标准的 OSI 七层模型以外,常见的网络层次划分还有 TCP/IP 四层协议 以及 TCP/IP 五层协议

各个模型对比图

Paste_Image.png

一、应用层「Application Layer」

简介

具体分类

1. HTTP「Hypertext Transfer Protocol」超文本传输协议

作用:规定客户端和服务器之间的数据传输格式
特点:

1)发送请求的方法「不同的方法对资源有不同的操作方式」

2)请求参数

传递给服务器的具体数据,比如:帐号、密码
浏览器和服务器对URL的长度有限制,一般不超过 1K

GET请求参数

POST请求参数

3)HTTP 通信过程 - 请求

I. 请求头:对客户端环境,请求信息的描述

II. 请求体:客户端发给服务器的具体数据,比如:文件数据「POST才会有」

4)HTTP 通信过程 - 响应

I. 响应头:服务器的描述,返回数据的描述

II. 响应体:服务器返回客户端的具体数据,比如:文件数据
III. 常见的响应状态码

状态码 英文名称 中文描述
200 OK 请求成功
400 Bad Request 客户端请求语法错误,服务器无法解析
404 NotFound 根据客户端的请求,找不到资源
500 Internal Server Error 服务器内部错误无法完成请求

2. DNS 「Domain Name System」域名系统协议

简介

域名:是由圆点分开一串单词或缩写组成的,域名与 IP 地址之间是一一对应的

3. DHCP「Dynamic Host Configuration Protocol」 动态主机设置协议

简介

4. URL「Uniform Resource Locator」统一资源定位符

一个 URL 对应网上一个资源

  • 客户端「Client」移动应用(iOS、android等应用)
  • 服务器「Server」为客户端提供服务、提供数据、提供资源的机器
  • 请求「Request」客户端向服务器索取数据的一种行为
  • 响应「Response」服务器对客户端的请求做出的反应,一般指返回数据给客户端

基本格式:协议: // 主机地址 / 路径

  1. 协议:资源的 查找/传输 方式

    • HTTP 超文本传输协议,访问的是远程的网络资源。格式:http://
    • file 访问本地计算机上的资源。格式:file:// 不用加主机地址
    • mailto 访问电子邮件。格式:mailto:
    • FTP 访问的是共享主机的文件资源。格式:ftp://
  2. 主机地址:存放资源的主机「服务器」的 IP地址「域名」

  3. 路径:资源在主机「服务器」中的 具体位置

二、传输层「Transport Layer」

简介

功能

端到端:连接是两个终端主机之间的连接,这两个终端系统的连接中要经过很多个设备「路由器」
点对点:连接是通信双方直接通过电缆进行的连接,中间没有经过其他任何设备

1. Socket「套接字」

简介

通过 Socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据

HTTP 与 Socket 的区别

  1. HTTP 是基于 Socket 的实现;HTTP 应用层协议,主要解决如何包装数据
  2. HTTP 传输的数据格式是规定好的,Socket 实现数据传输是最原始,Socket 实现的数据传输格式可自定义
  3. Socket 是对 TCP/IP 协议的封装,Socket 本身并不是协议,而是一个调用接口「API」
    通过 Socket 我们才能使用 TCP/IP 协议

I. 网络通信的要素

首先,定位到要通信的程序:使用 IP地址、端口;其次,确定如何传输数据:使用 协议、数据传输方式

有可能多种协议使用同一种数据传输方式,所以在 Socket 编程中,需要同时指明数据传输方式和协议

作用:表示进程的逻辑地址,是不同进程的标识
有效端口:0~65535,其中 0~1024系统使用或者保留端口,开发中建议使用 1024 以上 的端口

简介:协议仅仅是一种规范,必须由计算机软件来实现,由计算机组织制定。例如,如何建立连接,如何相互识别等
特点:通信的双方必须使用同一协议才能通信
常见协议:TCP、UDP、IP

注意:SOCK_DGRAM 没有想象中的糟糕,不会频繁的丢失数据,数据错误只是小概率事件

II. Socket 的连接过程

长连接:指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包
短连接:指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送

  1. 服务器监听
    服务器端 Socket 并不定位具体的客户端 Socket,而是处于等待连接的状态,实时监控网络状态
  2. 客户端请求
    由客户端的 Socket 提出连接请求,要连接的目标是服务器端的 Socket
    为此,客户端的 Socket 必须首先描述它要连接的服务器的 Socket
    首先,指出服务器端 Socket 的 IP 和 Port Number
    然后,向服务器端 Socket 提出连接请求
  3. 连接确认
    是指当服务器端 Socket 监听到或者说接收到客户端 Socket 的连接请求
    它就响应客户端 Socket 的请求,建立一个新的线程,把服务器端 Socket 的描述发给客户端,一旦客户端确认了此描述,连接就建立好了
    连接后,服务器端 Socket 继续处于监听状态,继续接收其他客户端套接字的连接请求

Socket 连接图解

Paste_Image.png

2. TCP「Transmission Control Protocol」传输控制协议

简介

特点

TCP 报文首部格式

Paste_Image.png

I. 建立连接-三次握手

建立连接非常重要,是数据正确传输的前提

模拟步骤

具体步骤

Paste_Image.png

必要性

II. 断开连接-四次挥手

释放不再使用的资源
不能正常断开,会造成数据传输错误,套接字不能关闭,持续占用资源,如果并发量高,服务器压力堪忧

模拟步骤

具体步骤

报文最大生存时间(MSL,Maximum Segment Lifetime)
数据包在网络中是有生存时间的,超过这个时间还未到达目标主机就会被丢弃,并通知源主机

Paste_Image.png

3. UDP「User Datagram Protocol」用户数据协议

简介

特点

三、网络层「Network Layer」

简介

包含的主要协议

1. IP 地址

简介:一共 4 个字节的长度,32 位

1)网络地址

2)广播地址

3)IPv4 地址分类

A、B、C 类私有地址

私有地址「private address」也叫专用地址,它们不会在全球使用,只具有本地意义

地址的分类

注:只有A、B、C 有网络号和主机号之分,D 类地址和 E 类地址没有划分网络号和主机号

4)特殊的 IP 地址解释

本地网络

注:一般的广播地址「直接广播地址」能够通过某些路由器,而受限的广播地址不能通过路由器

广播地址

127.0.0.0/8 回环地址

5)网络划分

简介

注意:全为 01 的 IP 地址是不能被计算子网掩码内的

利用子网数来计算子网掩码

在求子网掩码之前,先搞清楚要划分的子网数目,以及每个子网内的所需主机数目

  1. 将子网数目转化为二进制来表示;

如欲将B类IP地址 168.195.0.0 划分成 27 个子网:27=11011

  1. 取得该二进制的位数,设为 N

该二进制为五位数,N = 5

  1. 取得该 IP 地址的类子网掩码,将其主机地址部分的的前 N 位设为 1

将 B 类地址的子网掩码 255.255.0.0 的主机地址从前向后前 5 位设为 1,得到子网掩码 255.255.248.0

利用主机数来计算子网掩码

如欲将 B 类 IP 地址 168.195.0.0 划分成若干子网,每个子网内有主机 700 台:

  1. 将主机数目转化为二进制来表示

700=1010111100

  1. 如果主机数小于或等于 254(注意去掉保留的两个 IP 地址),则取得该主机的二进制位数,为 N,这里肯定 N<8

如果大于 254,则 N>8,这就是说主机地址将占据不止 8 位,该二进制为十位数,N=10

  1. 使用 255.255.255.255 来将该类 IP 地址的主机地址位数全部置 1,然后从后向前的将 N 位全部置为 0

将该 B 类地址的子网掩码 255.255.0.0 的主机地址全部置 1,得到 255.255.255.255,然后再从后向前将后 10位置 0
即为:11111111.11111111.11111100.00000000,即 255.255.252.0
这就是主机为 700 台的 B 类 IP 地址 168.195.0.0 的子网掩码

根据每个网络的主机数量进行子网地址的规划和计算子网掩码

2. ARP/RARP 地址解析协议

ARP「Address Resolution Protocol」简介

ARP 欺骗

ARP 工作流程

IP 数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)

Paste_Image.png

RARP「Reverse Address Resolution Protocol」简介

比如:局域网中有一台主机只知道物理地址而不知道 IP 地址
那么可以通过 RARP 协议发出征求自身 IP 地址的广播请求,然后由 RARP 服务器负责回答。

3. RIP/OSPF 路由选择协议

RIP协议

OSPF协议

4. NAT「Network Address Translation」网络地址转换协议

简介

四、数据链路层「Data Link Layer」

简介

其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点

作用

五、物理层「Physical Layer」

简介:激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。

作用

上一篇下一篇

猜你喜欢

热点阅读