美文网首页
iOS socket理论

iOS socket理论

作者: LGirl | 来源:发表于2016-06-20 12:11 被阅读63次

    1.网络七层由上往下分别为物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
    2.http协议对应于应用层
    tcp/udp协议对应于传输层
    ip协议对应于网络层
    3.http协议基于TCP连接的
    TCP/IP是传输层协议,主要解决数据如何在网络中传输
    HTTP是应用层协议,主要解决如何包装数据
    4.socket是对TCP/IP协议的封装,socket本身并不是协议,而是一个调用接口(API),又称之为“套接字”,通过socket,我们才能使用TCP/IP协议,程序员使用这个接口提供的方法,发送与接收消息。
    5.socket描述了一个IP,端口对。知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息。所以,socket一定包含了通信的双方,即客户端与服务端。
    6.TCP是面向连接的,传输可靠(保证数据正确性且保证数据顺序),用于传输大量数据(流模式),速度慢,建立连接需要开销较多(时间,系统资源)。
    7.TCP是一种流模式的协议,是面向连接的,也就是说,在连接持续的过程中,socket中收到的数据都是由同一台主机发出的,因此,知道保证数据是有序的到达就行了,至于每次读取多少数据不关心。
    8.TCP三次握手:是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的目的时连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP窗口大小信息。在socket编程中,客户端执行connect()时,将触发三次握手。
    9.TCP三次握手:
    客户端发送syn报文,并置发送序号为X
    服务端发送syn+ack报文,并置发送序号为Y,在确认序号为X+1
    客户端发送ack报文,并置发送序号为Z,在确认序号为Y+1
    10.TCP四次挥手
    主动方发送Fin+Ack报文,并置发送序号为X
    被动方发送ACK报文,并置发送序号为Z,在确认序号为X+1
    被动方发送Fin+Ack报文,并置发送序号为Y,在确认序号为X
    主动方发送ack报文,并置发送序号为X,在确认序号为Y
    原因:关闭连接时,当服务端收到Fin报文时,很可能并不会立即关闭socket,所以只能先回复一个ACK报文,告诉客户端,你的FIN报文为收到了,只有等到我服务端所有的报文都发送完了,我才能发送Fin报文。因此不能一起发送。
    11.UDP是面向无连接,传输不可靠,用于传输少量数据(数据包模式),速度快的传输层协议。UDP传输的是数据报文,而TCP是流。
    12.UDP是面向无连接的协议,只要知道接受端的IP和端口,且网络是可达的,任何主机都可以向接受端发送数据。
    13.socket的通信过程
    -1.服务端利用socket监听端口
    -2.客户端发起连接
    -3.服务端返回信息,建立连接,开始通信
    -4.客户端,服务端端开连接
    14.socket原理:套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务端问题。应用层可以和传输层通过socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
    15.socket连接:建立socket连接至少需要一对套接字,其中一个运行于客户端,另一个运行于服务器端。
    16.套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

    三次握手.png 四次挥手.png

    参考连接:http://www.jianshu.com/p/06f8b9111a56

    相关文章

      网友评论

          本文标题:iOS socket理论

          本文链接:https://www.haomeiwen.com/subject/gzewdttx.html