iOS-网络通信协议

一、协议

1、TCP
2、UDP
3、TCP/IP
4、HTTP
5、HTTPS

1、HTTP协议:基于TCP连接的,主要解决如何包装数据,对应于应用层;
2、TCP/UDP协议:主要解决数据如何在网络中传输,对应于传输层;
3、IP协议:对应于网络层;

  • 在传输数据时,可以只使用传输层(TCP/IP),但是那样的话,由于没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用应用层协议,应用层协议很多,有HTTP、FTP、TELNET等等,也可以自己定义应用层协议。
  • web使用HTTP作传输层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发送到网络上。

  • TCP/IP:传输层协议,主要解决数据如何在网络中传输。

二、网络通讯要素

1、 IP地址
2、 端口号
3、 传输协议

1、 IP地址(唯一标示网络设备的):网络中设备的标示
不易记忆,可以用主机名
本地回环地址:127.0.0.1 主机名:localhost
2、 端口号(定位程序)
用于标示进程的逻辑地址,不同进程的标示
有效端口:0~65535,其中0~1024由系统使用或者保留端口,开发中不要使用1024以下的端口
3、传输协议(用什么样的方式进行交互)
通讯的规则
常见协议:TCP、UDP
URL(统一资源定位)http://ip:80/文件路径

三、TCP(传输控制协议)

  • 1、TCP是面向连接的、传输可靠(保证数据正确性且保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。
  • 2、TCP是一种流模式的协议,是面向连接的,也就是说,在连接持续的过程中,Socket中收到的数据都是由同一台主机发出的(劫持什么的不考虑),因此,知道保证数据是有序的到达就行了,至于每次读取多少数据不关心。

1、 建立连接,形成传输数据的通道
2、 在连接中进行大数据传输(数据大小不收限制)
3、 通过三次握手完成连接,是可靠协议,安全送达
4、必须建立连接,效率会稍低
5、类似于两个人打电话
iOS-网络通信协议_第1张图片

五、UDP(用户数据报协议)

  • UDP是面向无连接、传输不可靠、用于传输少量数据(数据包模式)、速度快的传输层协议。
  • UDP传输的是数据报包,而TCP是流。(TCP类似于打电话,UDP类似于发短信)

1、 将数据及源和目的封装成数据包中,不需要建立连接
2、 每个数据包的大小限制在64K之内
3、 因为无需连接,因此是不可靠协议
4、不需要建立连接,速度快
5、 类似于两个人发短信

iOS-网络通信协议_第2张图片

TCP三次握手

  • 三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP窗口大小信息。在Socket编程中,客户端执行connect()时,将触发三次握手。

iOS-网络通信协议_第3张图片

  • 第一次握手:客户端发送一个TCP的SYN标志位置1的包,指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号字段里。

  • 第二次握手:服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号设置为客户的序列号加1以,即X+1。

  • 第三次握手:客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1。并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写序列号的+1。

  • 关于三次握手,或许你可以这样记忆:

类似于打电话:手机类似于移动端,移动联通通信服务类似于服务器,IP地址就是各自的手机号码,端口号就是对方的姓名。只要知道各自的姓名(也可理解为身份),双方才会进行通信。(你会和一个陌生人畅聊吗?)

  • 1、「喂,你好,请问你是XXX吗?」
  • 2、「我是。你是谁呢?」
  • 3、「我是XXX……」

当各自知道对方的信息后,双方就可以通话了。

你可能感兴趣的:(通信,http协议,网络,iOS)