iOS开发之即时通讯
白羽 2018-07-16 来源 :网络 阅读 1318 评论 0

摘要:本文将带你了解iOS开发之即时通讯,希望本文对大家学IOS有所帮助。


    

网络通讯三要素:

 
网络七层协议划分:

 
网络五层协议的划分:

 
 要记网络层的5层协议,可以把它想像为一枚洋葱。学过计算机网络的,看到这个网络协议的套接字,大概就会明白了!它是一层一层的进行包裹的,然后交由物理层进行发送的。在网络七层的基础上,将应用层、表达层、会话层合并为应用层了。
 
TCP的三次握手:

 简洁版:

三个步骤的解释:
第一次:客户端向服务器端发送请求
SYN = 1 (SYN 是一个同步序列号)
ACK = 0 (TCP协议规定的一个标识,还没连接为0,报文连接以后 ACK = 1)
seq = x (客户端和服务器端身份的验证是通过序列号是别的,也就是seq)
 
第二次:服务端响应客户端
ack = x+1   (回复报文确认的序列号)seq = y    (服务器端会把这个序列号带给客户端)
SYN = 1
ACK = 1    (f)
 
第三次:客户端响应服务器端
ACK = 1
seq = x+1  (用ack作为下一次同步的连接,这是客户端的做法)
ack = y+1    (客户端对服务器端身份的确认,这样就建立了连接)
 
 
面试题:为什么要建立3次连接?
假设是2次;
  假如在第1次客户端向服务器端发送请求因为阻塞,客户端会再次给服务器端发送请求,这次服务器端和客户端建立了连接。这样双方就可以发送数据了,发送完以后就可以断开连接了。但是这是阻塞的请求到了服务器端,这时会建立第二次连接。但是客户端的数据发送完了,造成了资源的浪费。
  所以第三次是为了再次确认,避免资源的浪费。
 
网上视频聊天SDK:
网易,腾讯,青牛的比较稳定,可以看看!
 
TCP的4次断开:

 
第一步:客户端向服务器端发送建立连接请求:
FIN = 1  (没有数据发送了,将要断开)
seq = 1  (序列号)
第二不:服务器端响应客户端
 ACK = 1  (客户端不能向服务器端推送数据,但是服务器端是可以的)
seq = 1    
ack = u+1
 
为什么是四次呢?
因为它是一个全双方的通信,彼此都可以发送你信息;
 
Socket连接 

 
 一个SOCket连接的Demo(基于本的 127.0.0.1, 端口号:6969):
打开一个A终端窗口输入:
nc -l 6969 
监听6869端口,相当于打开服务器
 
打开B终端进程窗口,输入
nc 127.0.0.1 6969
这样就建立通信了,在A终端窗口输入 123 ,回车会发现B终端进程窗口,出现123如:

B终端口:

 
Socket连接流程:

  Socket 是基于TCP、UDP的抽像层的。
  在这个流层中,可以把Socket理解为插排。它就相当于一个媒介,Socket是位于用户层和传输层之间用与操作TCP和UDP的。
  Socket是IP的端口(狭义理解),可以理解为IP的一个端口,在Linux理解为套接字。
 
  Socket是成对出现的,这要保证我们的客户端和服务器端都要有套接字Socket。
 
流程关键字:
  bind(): 绑定IP地址中的端口,判断这个端口是否被占用了,若没占用他会监听这个端口号。
  listen(): 如上述的Demo中 6969 端口,监听这个端口是阻塞线程的,一直等待客户端的连接。
  accept(): 如果有客户端的连接,它就会接受,连接完之后进行数据通信,连接是基于TCP的,基于TCP的3次握手,结下来就可以进行数据的传输。
  read(), write(): 进行数据的传输;
  close(): 发送完后,就结束连接。
 
  Socket与TCP的最大区别就是Socket可以控制什么时候打开,什么时候连接;
  http是短连接,原因是一问一答,走了之后就没有了,TCP是短连接;
  Socket是长连接,是因为可以手动的控制它,数据发送完了,不需要了Socket就可以对它进行关闭;
 





      


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程