一、 网络的概念
每个人心里应该都有一个答案,我就不再累赘,就用抛砖引玉的一句话:网络就是利用通信线路和通信设备,用一定的链接方法,将分布在不同地点的具有独立功能的多台独立计算机或者是移动设备相互链接起来,在网络软件的支持下进行数据通讯,实现资源共享的系统.
首先讲一下OSI(开发系统互联)模型
OSI只给出了计算机网络的一些原则性说明,并不是一个具体的网络,将整体网络分成了7层:
1.应用层,
2.表示层,
3.会话层,
4.传输层,
5.网络层,
6.数据连路层,
7.物理层
二、TCP/IP
TCP/IP transmission Control Protocol/Internet Protocol(传输控制协议/网间协议)是工业标准的协议集,tcp和ip是两个独立且紧密结合的协议,负责管理和引导数据报文在internet上的传输,TCP负责和远程主机的连接,而IP负责寻址,
TCP/IP也是一个分层的网络协议
分为1、 应用层,
{应用层提供一种常用的应用层协议,包括FTP、HTTP、DNS等,是建立在TCP/IP协议组之上的专用程序}
2、 传输层,
{提高TCP和UDP(user datagram protocol 用户数据报协议),他们都建立在IP的基础之上,其中TCP提供面向链接服务,UDP提供简单的无连接服务,传输层是提供端到端,即应用程序之间的通信}
3、 网际层,
{包括IP(网际协议)ICMP ARP RARP ,IP在TCP/IP协议组中处于核心地位}
4、 网络接口层,
{这是TCP/IP的最低一层,包括多种逻辑链路控制和媒体访问协议}
HTTP与TCP/IP的关系:即HTTP协议属于TCP/IP协议栈的应用层,虽然HTTP本身是一个协议,但其最终还是基于TCP的,是从Web服务器传输超文本到本地浏览器的传送协议;
三、 HTTP网络通信
client向server提出请求然后响应,(浏览器通过http将web服务器上站点的网页代码提取出来,并将得到的结果呈现在客户端)该http协议位于TCP/IP协议栈的应用层。
http采用请求/响应模式,
有状态响应码
请求方式
GET
HEAD
POST
PUT
DELETE
OPTIONS
TRACE
CONNECT等
我们一般的请求类型是GET和POST两种
四、网络套接字(Socket)
网络套接字在网络中代表了一个通信路径端点。两个端点之间通过IP地址和端口地址来识别。所以,在网络上进行通信共包含了两个套接字
Core Foundation 提供了3种操作socket方法(1.CFNetWork,2.CFSocket,3.BSD Socket)
CFNetWork是一个低层次,高性能框架,提供灵活的操作协议栈。CFNetWork依赖两个API : CFSocket和CFStream,这两个API是Core Foundation 框架的一部分,要使用CFNetwork就必须理解这些API,他们是BSD Socket的扩展.
CFSocket的使用,
//首先创建socket的上下文,
//创建Socket
//配置要访问的服务器信息
//封装服务器信息
//链接服务器
Socket是应用层 与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。