
iOS网络的HTTP,TCP,UDP,套接字知识摘要
OSI七层模型
我们通常使用的网络数据传输从下到上有七个层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层,这些层又称为OSI. . 一楼,二楼,⋯⋯,七楼.

808763-20160503155619841-1535147252.gif
每层功能简介
1. 物理层(Physical Layer)
物理层位于OSI参考模型的最低层,它直接面对原始位流的传输. 为了实现原始比特流的物理传输,物理层必须解决一系列问题,包括传输介质,信道类型,数据与信号之间的转换,信号传输中的衰减和噪声等. 此外,物理层该标准应提供物理接口的机械,电气,功能和监管特性,以便不同的制造商不仅可以根据公认的标准独立制造设备,而且还可以使每个制造商的产品相互兼容.
2. 数据链接层
在物理层发送和接收数据的过程中,将存在一些物理层无法自行解决的问题. 例如,当两个节点试图同时在一条线上发送数据时,应该怎么做?节点如何知道其接收的数据是否正确?如果噪声更改了数据包的目标地址,则节点如何检测到它丢失了数据包并应接收分组呢?这些是数据链路层必须负责的任务.
数据链路层涉及相邻节点之间的可靠数据传输. 数据链路层增强了物理层以传输原始位功能,因此它在网络层中看起来像是无错线. 为了实现相邻节点之间的无错数据传输,数据链路层提供了数据传输过程中的确认,错误控制和流控制等机制.
3. 网络层(网络层)
当网络中的两台计算机进行通信时,中间可能会有许多中间节点,甚至是不同的通信子网. 网络层的任务是在通信子网中选择适当的路径,以便传输层在发送端传输的数据可以通过所选路径到达目的地.
为了实现路径选择,网络层必须使用寻址方案来确定存在哪些网络以及设备在这些网络中的位置. 不同的网络层协议使用不同的寻址方案. 确定目标节点的位置后,网络层还负责正确引导数据包通过网络,并找到通过网络的最佳路径,即路由. 如网中同时存在太多数据包,它们将相互阻塞并可能形成网络瓶颈,因此网络层还需要提供一种拥塞控制机制来避免这种现象. 此外,网络层还必须解决异构网络互连的问题.
4. 传输层(Transport Layer)
传输层是OSI七层模型中唯一负责端到端数据传输和控制功能的层. 传输层是OSI七层模型中的继承层. 它下面的三层主要面向网络通信,以确保信息准确有效地传输;它上方的三层面向用户主机,并为用户提供各种服务.
通过弥补网络层服务质量的不足,传输层为会话层提供了端到端的可靠数据传输服务. 它在会话层的传输层下面屏蔽了数据通信的详细信息,因此会话层将不受接下来的三层技术变化的影响. 但是同时,它依赖于以下三个级别来控制实际的网络通信操作,以完成从源到目标的数据传输. 为了向会话层提供可靠的端到端传输服务,传输层还使用错误控制和流控制等机制.
5. 会话层
会话层的功能是在两个节点之间建立,维护和释放面向用户的连接. 它基于传输连接建立会话连接,并执行数据交换管理,从而允许以单工,半双工和全双工传输数据. 会话层提供两种服务功能,令牌管理和同步.
6. 表示层(Presentation Layer)
表示层下面的层仅关心可靠的数据传输,而表示层关心所传输数据的语法和语义. 它主要处理两个通信系统之间交换的信息的表示,包括数据格式转换,数据加密和解密,数据压缩和恢复以及其他功能.
7. 应用层(Application Layer)
应用程序层是OSI参考模型的最高层,负责为用户应用程序提供网络服务. 与OSI的其他层不同,它不为任何其他OSI层提供服务,而仅为OSI模型以外的应用程序提供服务. 这包括建立连接,在应用程序之间进行同步或彼此通信以及建立有关错误纠正和数据完整性过程控制的协商. 该应用程序层还包含大量应用程序协议,例如分布式访问,文件交换,电子邮件和虚拟终端.
其中,物理层,数据链路层和网络层通常被称为媒体层,这是网络工程师的研究对象;
传输层,会话层,表示层和应用程序层称为主机层,是用户面对和关心的内容.
http协议对应于应用层

tcp协议对应于传输层
ip协议对应于网络层
这三个在本质上是不可比的. 而且,HTTP协议基于TCP连接.
TCP / IP是一种传输层协议,主要解决网络中数据的传输方式. HTTP是一个应用程序层协议,主要解决如何打包数据的问题.
当我们传输数据时,我们只能使用传输层(TCP / IP),但是在这种情况下,由于没有应用层,因此无法识别数据内容. 如果要使传输的数据有意义,则必须使用应用程序层. 有许多协议和应用程序层协议,包括HTTP,FTP,TELNET等. 您还可以自己定义应用程序层协议. WEB使用HTTP作为传输层协议来封装HTTP文本信息,然后使用TCP / IP作为传输层协议将其发送到网络. 套接字是TCP / IP协议的封装. 套接字本身不是协议,而是调用接口(API). 通过Socket,我们可以使用TCP / IP协议.
TCP / IP模型

808763-20160503170145716-1621254072.jpg
TCP / IP模型是由美国国防部创建的,因此有时被称为DoD(国防部)模型. TCP / IP模型分为四层,从下到上分别是网络访问层,Internet层,传输层和应用程序层,如图所示.
应该注意,TCP / IP是OSI模型之前的产品,因此两者之间没有严格的层对应关系. 在TCP / IP模型中,OSI中没有对应于物理层和数据链路层的部分. 相反反复出现您当前的网络存在链路层劫持,由于TCP / IP的主要目标是致力于异构网络的互连,因此OSI中与该层和数据链路层相对应的物理部分不受限制.
在TCP / IP模型中,网络访问层是TCP / IP模型的最低层. 它负责从Internet层接收IP数据报,并通过基础物理网络或基础物理网络发送IP数据报. 接收到物理帧,并提取IP数据报并将其移交给Internet层. 网络访问层支持使用不同技术和网络硬件在网络之间进行互连. 它包括属于操作系统的设备驱动程序和用于处理特定硬件物理接口的计算机网络接口卡.
Internet层负责将数据包从源主机独立发送到目标主机,这涉及选择和切换数据包的最佳路径,并使此过程与它们通过的路径和网络无关. 这就像您发送一封信时一样,您无需知道它是如何到达目的地的,而只需关心它是否到达. TCP / IP模型的Internet层在功能上与OSI参考模型中的网络层非常相似.
传输层的角色类似于OSI参考模型,即在源节点和目的节点的两个对等实体之间提供可靠的端到端数据通信. 为了确保数据传输的可靠性,传输层协议还提供了确认,错误控制和流控制等机制. 另外,在一台通用计算机中,经常有多个应用程序同时访问网络,因此传输层还需要提供不同应用程序的标识.
应用程序层涉及为用户提供网络应用程序,并为这些应用程序提供网络支持服务. 由于TCP / IP将所有与应用程序相关的内容分类为一层,因此它需要在应用程序层处理高级协议,数据表达和对话控制任务.
OSI模型与TCP / IP模型之间的区别

808763-20160503161408294-839809904.jpg
OSI模型包括七层,而TCP / IP模型只有四层. 尽管它们在功能上等效于网络层,传输层和应用程序层,但其他层并不相同.
TCP / IP模型中没有特殊的表示层和会话层. 它把与这两层有关的表达,编码和会话控制功能整合到应用层中来完成. 另外,TCP / IP模型还包括OSI的数据链路层和物理层到网络访问层.
OSI模型在网络层支持无连接和面向连接的服务,而在传输层仅支持面向连接的服务. TCP / IP模型在Internet层仅支持一种无连接服务,但在传输层则支持面向连接和无连接的服务.
TCP / IP更简单,因为它具有更少的层,并且作为从Internet(INTERNET)开发的协议,它已成为网络互连的事实上的标准. 但是,当前没有基于OSI七层模型的实际网络. OSI仅被广泛用作理论参考模型.
Http和Socket连接之间的区别
短连接
连接->传输数据->关闭连接
HTTP是无状态的. 每次浏览器和服务器执行HTTP操作时,都会建立连接,但连接会在任务结束时终止.
也可以说短连接意味着在连接后发送和接收数据后套接字立即断开连接.

长期联系
连接->传输数据->保持连接状态->传输数据->. . . ->关闭连接.
长连接是指无论建立Socket连接后是否使用该连接,都可以维持,但安全性较差.
http长连接
HTTP还可以使用Connection建立长连接: keep-alive,HTTP 1.1默认为持久连接. 与HTTP1.1和HTTP1.0相比,最大的不同是增加了持久连接支持(看似最新的http1.0可以显示指定的保持活动状态),但是它仍然是无状态或不可信的.
何时使用长连接和短连接?
长连接通常用于频繁的操作和点对点通信,并且连接的数量不能太多. 每个TCP连接都需要三步握手,这需要时间. 如果首先连接每个操作,则操作速度将大大降低,因此在每个操作之后都不会断开连接,并且在第二次处理过程中直接发送数据包OK,无需建立TCP连接. 例如,的连接使用长连接,而短连接的频繁通信将导致套接字错误,而频繁的套接字创建也浪费了资源.
HTTP和WEB网站之类的服务通常使用短链接,因为长连接会占用服务器的某些资源,而成千上万甚至数以百万计的客户端(例如WEB网站)都使用短连接. 这样可以节省一些资源. 如果使用长连接并且同时有成千上万的用户,如果每个用户都占用一个连接,那么您可以想象. 因此,并发量很大,但是每个用户都需要使用短链接而无需频繁操作.
简而言之,长连接和短连接的选择取决于情况.
1,http连接
HTTP协议,超文本传输协议(Hypertext Transfer Protocol,超文本传输协议)是Web网络的基础,并且是手机网络的常用协议之一. HTTP协议是基于TCP协议构建的应用程序.
HTTP连接最显着的功能是,客户端发送的每个请求都需要服务器发回响应. 请求完成后,将主动释放连接. 从建立连接到关闭连接的过程称为“一次性连接”.
1)在HTTP 1.0中,来自客户端的每个请求都需要建立一个单独的连接. 处理完此请求后,连接将自动释放.
2)在HTTP 1.1中,可以在一个连接中处理多个请求,并且可以重叠多个请求,而无需在发送下一个请求之前等待请求结束.
由于HTTP将在每次请求后主动释放连接,因此HTTP连接是“短连接”. 为了保持客户端程序的状态,您需要不断向服务器发起连接请求. 通常的做法是根本不需要获取任何数据,并且客户端还每隔固定的时间向服务器发送一次“保持活动”请求. 在接收到请求之后,服务器回复客户端,表明它知道客户端“”. 如果服务器长时间无法接收到客户端的请求,则认为客户端处于“脱机”状态. 如果客户端长时间无法收到服务器的答复,则说明网络已断开连接.
2,套接字
套接字是用于在应用程序层和TCP / IP协议系列之间进行通信的中间软件抽象层. 它是一组接口. 首先让我们通过图片知道Socket在哪里吗?

808763-20160503170622466-1166765855.jpg
a. 套接字概念
套接字(Socket)是通信的基石,也是支持TCP / IP协议的网络通信的基本操作单元. 它是网络通信过程中端点的抽象表示,包含网络通信所需的五种信息: 用于连接的协议,本地主机的IP地址,本地进程的协议端口,网络的IP地址. 远程主机以及远程进程端口的协议.
当应用程序层通过传输层执行数据通信时,TCP将遇到同时为多个应用程序进程提供并发服务的问题. 可能需要多个TCP连接或多个应用程序进程通过同一TCP协议端口传输数据. 为了区分不同的应用程序过程和连接反复出现您当前的网络存在链路层劫持,许多计算机操作系统为应用程序提供了一个套接字接口,以便应用程序与TCP / IP协议进行交互. 应用程序层和传输层可以通过Socket接口区分通信与不同的应用程序进程或网络连接,并实现数据传输的并发服务.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-167435-1.html
fx