ios 网络socket一:及时通讯底层原理详解

一.端口号

客户端访问服务器,通过ip地址找到服务器如下的:192.168.31.180,是个内网地址,在世界上是有和他重复的。通过端口选择服务:如访问网页:192.168.31.180:80,访问电子邮件的服务:192.168.31.180:110。刚刚看到的80,110就是端口号。不需要记,只需要有相应的概念。其实我们现在几乎都不会用端口号直接去访问,因为有协议,它会默认占用端口。
在这里插入图片描述
在这里插入图片描述

TCP和UDP

TCP和UDP是传输协议。https协议一定是通过加密的。要理解OSI网络模型。
数据是以数据包的格式传递的。数据包打包的过程是数据链路层做的。传递数据的电线就是物理层的东西。选择传递数据的路径,是由网络层做的,选择最优的路径,ip地址是个目的地,作为开发者是接触不到网络层的,比如路由器。开发者接触的是从传输层开始往上的层次,是软件部分,我们做开发都是站在巨人的肩膀上。其实硬件是基于软件的,是包含软件的,比入交换机路由器,其实是有程序的,只不过这些程序是写死在硬件里面的,所以执行效率很高。数据有一个封包和解包的过程。我们开发是用不到ip协议的,ip协议在网络层,tcp协议在传输层。OSI模型已经演化为了TCP/IP模型。因为会话层表示层应用层,彼此之间已经变得很模糊了,很多协议都已经废弃了。
传输层保证数据准确的从一个端送到另一个端,数据送完之后,那我需要建立一个网络会话(会话层),来知道你送来的是什么数据,我怎么接受你送来的数据。比如http协议,就是按一个特殊格式发一个串,然后对二进制数据进行解析,才能知道你发的是什么。比如发送端和接受端都协商按http协议,就可以通话了。那发送的数据是图片,文本还是视频,语音,就需要去表示(表示层)。其实现在的开发会话表示应用层都属于应用层了,很多协议都已经废除了。

在这里插入图片描述
在这里插入图片描述

应用场景,或者什么情况采用什么协议

UDP有点像短信,只管发不管你是否收到。只需要一个收获地址,就发了。如果要发一个大文件,就拆分成若干个小的数据发出去。
TCP就像电话,必须要保证连接,两个端都在线才能保证通话成功。在网络不好的时候就直接断掉了,不允许丢数据。
流媒体直播,的数据传递,是UDP,比如网络情况不好,会模糊,马赛克的感觉,是在丢包,丢的数据包,是典型的UDP。也比如玩游戏,LOL,王者荣耀,吃鸡,的数据包传递,也是UDP,因为有网络卡顿的情况,网络不会断开,卡顿后收到的是新位置的数据包,移动过程的数据包就丢失了。比如掉帧,(标准帧格式),掉帧就是掉的数据包。
下载数据是TCP,是不允许丢包的,比如下载XCODE如果掉了一个包,那XCODE就用不了了。如果断开了连接,允许再次连接。三次握手和四次挥手保证数据的完整性。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

socket

ip能确定网络的设备,端口找到这个设备的服务。然后通过确定传输协议来两台设备传输数据。
socket套接字,用插座来理解比较好。插座的一个口是ip,一个口是端口。一个IP加上一个端口就是一个socket。我和你进行通讯,是我和服务器先进行通讯,然后服务器再和你进行通讯。我的ip和我的端口是一个socket,服务器的ip和端口又是一个socket。我们两的通讯可以称为socket通讯。连上这两个插座就能通讯。短链接:连完即断;长链接:连在这个地方一直在用,称为长链接。
也称为socket通讯管道。
socket是c语言的,是跨平台的。不管是服务端,android端还是ios端,所有的网络socket通讯都是一样的。
connect连接插座,连上后,write写发数据,read读,读收到的数据。如果是个短链接,就close,如果是个长链接就加一个循环,又去写,又去读。

苹果提供了网络通讯的框架:NSURLSession,NSURLConnection。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值