标签:
众所周知,网络应用在互联网时代的重要性,个人作为一个现代人在日常生活中基本上离不开网络。
iOS网络开发这一块,无疑是很重要的一块。个人认为是比较难啃的,来来回回学了好几回,还是晕晕没学明白,下面希望通过写这份学习笔记能加深对网络开发的理解。
初次写博客,只是为了记述一些学习开发想法,请各位多多指教。
一、URL中常见的协议
那么什么是URL呢?
URL全称是Uniform Resource Locator(同意资源定位符),URL是唯一的,通过一个URL,能找到互联网唯一的一个资源。
URL的基本格式=协议://主机地址/路径
协议:不同的协议代表不同的资源查找方式、资源传输方式,
下面有几种常用的协议
路径:资源在主机中的具体位置
二、HTTP协议
各博客论坛都有很多关于HTTP的文章,我这就班门弄斧了,可以转到大神的博客去学习。
下面给出百度百科链接,或自行查阅书籍资源
我自己的理解:
http连接是建立在TCP连接上的一种应用,HTTP连接使用“请求--响应”的方式,不仅在请求时需要先建立连接,而且需要客户端在服务器发出请求后,服务器才能回复数据给客户端,请求结束后,自动释放连接,这种方式可以节省传输时间,相对于socket也属于“短连接”。
那么来拓展一下:什么是TCP,说到TCP肯定会有UDP的存在,这也是面试很可能会问到的。
[喂喂喂,能听到我吗?]
[没问题。能听到我说一声。]
[没问题。]
不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,因此传输速度很快
3.Socket连接与HTTP连接的区别:
Socket:由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。
在实际应用开发中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致Socket连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态.
HTTP:HTTP协议是建立在TCP协议之上的一种应用,HTTP连接使用的是“请求-响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器才能回复数据。
在请求结束后,会主动释放连接。
从建立连接到关闭连接的过程称为“一次连接”。
由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。
通常的做法是即使不需要获得任何数据,客户端也保持每隔一段固定时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开
使用场景:很多情况下,需要服务器主动向客户端推送数据,保持客户端与服务器数据的实时与同步。
此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;
若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回客户端,因此,客户端定时向服务器发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端
Socket原理
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。
它是网络通信中端点的抽象表示,包含进行网络通信必须的五种信息:1连接使用的协议,2本地主机的IP地址,3本地进程的协议端口,4远程主机的IP地址,5远地进程的协议端口。
应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。
多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
建立Socket连接:建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认
服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求
客户端请求:客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求
连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求
Socket连接与TCP连接:创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接
标签:
原文地址:http://blog.csdn.net/u011018309/article/details/51329083