本文将解决网络编程的基础问题,很少涉及到高级API的调用,适合困惑于网络基础的同僚。很少有文章从基础讲起,本文将试着总结一下!
首先,不要被面试题所局限,
比如:HTTP、Scoket、TCP、IP、UDP之间的区别是什么?
你要摒弃这个问题,然后再来思考:
我们什么时候会涉及到网络编程?
答案很明显:
1.HTTP请求,也就是我们做常用的网络请求。
2.Scoket通信,也就是即时通讯会用到。
在iOS开发最常用的就是这两个了,那么我们就要深度解析HTTP、Scoket究竟是什么,以及怎么用的问题。
什么叫做服务器?
你可以认为他是一个主机,也确实是一个主机,这个主机有个IP,
你可以通过这个IP来访问你服务器上你可以访问的文件,也就是URL。
URL:统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它
下面我们要看一些原理和模型
必须提一下OSI模型:Open System Interconnection (不是iOS)
1.OSI模型是什么?和网络有什么联系?
OSI模型把网络通讯工作分为7层,
这你一定很了解:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层;
基于OSI7层模型,TCP/IP模型
简化出了应用层,传输层,网络层,网络链路层,
关于每一层的作用,本文不再提,因为通常我们不用向底层在研究,知道这些就可以了
2.TCP/IP模型和OSI模型的关系?
TCP/IP模型实际上是OSI模型的一个浓缩版本,
它只有四个层次:应用层,传输层,网络层,网络接口层
3.TCP/IP是什么?
TCP/IP单说这个的话一般有两种意思,TCP/IP模型或者是TCP/IP协议簇,
关于TCP/IP模型我们在第二那个问题中提到了,下面我们看看TCP/IP协议簇都包括什么?
4.TCP/IP协议中常用的协议?
我们来讲HTTP、TCP、UDP、IP,这也是我们在移动端开发中最常用协议了。
首先我们来看一个比较形象的例子来感受下层层封装:
我们再来看另外一张图:
5.我们需要首先了解Scoket是什么?
1.他是一个API
2.他是被封装的
3.他是让程序猿简单调用TCP、UDP的
4.他不是协议
5.他是网络通讯的基石
6.基本上所有的应用层操作都是要用到scoket
延伸:
TCP、UDP是什么?
参考链接:http://blog.csdn.net/li_ning_/article/details/52117463
TCP:
TCP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、开启监听,用函数listen();
5、接收客户端上来的连接