[ios基础]ios面试--网络协议篇

1.TCP协议:

TCP协议是自IP协议出来又一常用的信息传输协议。是一个基于链接的、安全的、双向的传输协议

现在,TCP协议一般都喝IP协议共同使用,我们称之为TCP/IP

TCP说白了就是在互联网扩张时候,数据从一段经过无数个路由器和交换机到达指定的一端的解决方案。

该方案包括最小路径,最快时间,下一站路由器的选择等。


在计算机中的TCP协议:

我们的计算机或手机,在连入网络之后,就可以和别的设备做信息交互。

TCP协议要做的,就是保证你的信息能够准确、安全、快速的发送到你要发送的另一台设备上。

识别一台设备的方式就是用IP地址。每一台计算机或者手机,连入网络之后都会有一个独立的IP地址,这个IP地址用于标识这台设备,并且IP地址不会与别的设备共用。


TCP的传输原理

定义两癌计算机S、C

计算机S: service 服务器

计算机C:Client 客户端


TCP协议规定,两台设备传输协议前必须要进行连接(基于连接的传输协议),同时,服务器不能主动向客户端提出连接,只有客户端才能主动向服务器发送连接请求。


TCP协议规定,实现TCP协议的客户端必须要有一个端口号,端口号是一个1-65535的整数,该整数用于区分应用程序(比如你的电脑QQ支持TCP协议,浏览器支持TCP协议,端口的定义就是为了保证QQ服务器发过来的数据能被QQ进程所接受,而不是给你的浏览器进程。理论上,只需要两个端口不一样即可);


C主动向S发出连接请,连接成功后,S会发送给C一个连接成功的标识数据,C收到这个数据表示连接成功,C收到这个数据表示连接成功,两台设备就可以进行信息交互了。


当两台设备连接成功后,均可以主动向另一端发送消息。

在信息交互过程中,我们假设:

你的电脑ip是 111.111.111.111 qq进程端口号是8888

qq服务器的IP是 222.222.222.222  服务器qq应用的端口号是9999

那么操作系统会把你发送的数据(JSON)和ip地址以及端口号打包成一个特定的格式(TCP)报文,然后转为2进制数据,最后变为正弦的模拟信号,由计算机网卡发出,到路由器,再到因特网;

QQ服务器收到消息后,会进行反解包,即可得到上面的数据了。

当qq服务器收到数据后,会隐藏的发送一个接收确认帧(这个确认帧是TCP规定的,不是腾讯为了安全起见而特意写的),你的计算机收到确认帧,代表本次消息发送成功,未收到确认帧说明发送失败。


2.UDP协议

UDP协议和TCP协议是在同一层次上,但是UDP协议是基于广播的协议;

UDO是一个基于非连接的、不安全的、单向的传输协议;

UDP协议的内容和TCP差不多,但是区别在于UDP的“发送成功”是指消息成功从你的电脑上发出,而不是接受者收到了你的消息


UDP传输原理

UDP传输不需要连接,发送端只需要把自己的消息打好包(UDP报文),然后从电脑上发到因特网即可,不会有任何的确认帧来反馈你。

问题来了,既然UDP不安全,为什么他还会存在?

其实很简单,TCP的安全是有资源代价的,一个TCP报文要安全传输,必须要有资源对他进行监视才可以。UDP不安全,但是占用资源少,所以一般不需要有安全传输要求的信息可以使用UDP。


3.Socket

Socket是一个类,每个编程语言都有自己的Socket。Socket就是单纯的协议实现。

TCP和UDP只是一个协议,一个规定。而Socket就是一个遵循这个协议的执行者。

每一个终端都可以通过Socket实现TCP和UDP的信息交互。

比如ios端实现了TCP协议的类叫做CFSocket和CFStream

安卓端实现TCP协议的类叫做JSocket。


虽然这是两个不同语言的不同类。但是他们都遵循了TCP协议。所以他们可以在不同类型的操作系统上,实现信息交互,从而实现ios和安卓的信息交互。



4.HTTP协议

HTTP协议是基于TCP协议拓展出来的协议,与HTTP协议类似的还有SMTP协议、POP3协议FTP协议

实现原理:

1.到dns解析获取网址的真实ip地址(123.132.133.123)

2.创建一个socket连接,

3.连接成功继续,失败停止

4.发送一个TCP报文,(包含数据、ip地址、端口号)

5.等待服务器回传;

6.断开连接




你可能感兴趣的:(ios基础)