欢迎来到风尚网
风尚网首页 > 首页 > 阅读 > 深入浅出-iOS的TCP/IP协议族剖析&&Socket

深入浅出-iOS的TCP/IP协议族剖析&&Socket

作者:Yangcs 2016-02-19 08:12 来源:简书 编辑:美朵

文章摘要
简介该篇文章主要回顾--TCP/IP协议族中的TCP/UDP、HTTP;还有Socket。(--该文很干,酝酿了许久!你能耐心看完吗?O_o)我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议。传输层(TransportLayer)是OSI(七层模型)中最重要、最关键的一层,它负责总体的数据传输和数据控制的一层,传输层提供端到端(应用会在网卡注册一个端口号)的交换数据的机制,检查分组编号与次序。传输层对其上三层如会话层等,提供可靠的传输服务,对网络层提供可靠的目的地站点信息。传输

简介

该篇文章主要回顾--TCP/IP协议族中的TCP/UDP、HTTP;还有Socket。

(--该文很干,酝酿了许久!你能耐心看完吗?O_o)

我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议。

传输层(Transport Layer)是OSI(七层模型)中最重要、最关键的一层,它负责总体的数据传输和数据控制的一层,传输层提供端到端(应用会在网卡注册一个端口号)的交换数据的机制,检查分组编号与次序。传输层对其上三层如会话层等,提供可靠的传输服务,对网络层提供可靠的目的地站点信息。

传输层中的协议

  • 传输层它为应用层提供会话和数据报通信服务。

  • 传输层承担OSI传输层的职责。
  • 传输层的核心协议是TCP和UDP。

    TCP提供一对一的、面向连接的可靠通信服务。TCP建立连接,对发送的数据包进行排序和确认,并恢复在传输过程中丢失的数据包。

    与TCP不同,UDP提供一对一或一对多的、无连接的不可靠通信服务。不论是TCP/IP还是在OSI参考模型中,任意相邻两层的下层为服务提供者,上层为服务调用者。下层为上层提供的服务可分为两类:面向连接服务和无连接服务。

  • 面向连接的网络服务

    面向连接的网络服务又称为虚电路(Virtual Circuit)服务,它具有网络连接建立、数据传输和网络连接释放三个阶段。

    是按顺序传输可靠的报文分组方式,适用于指定对象、长报文、会话型传输要求。面向连接服务以电话系统为模式。要和某个人通话,首先拿起电话,拨号码,通话,然后挂断。同样在使用面向连接的服务时,用户首先要建立连接,使用连接,然后释放连接。

    连接本质上像个管道:发送者在管道的一端放入物体,接收者在另一端按同样的次序取出物体;其特点是收发的数据不仅顺序一致,而且内容也相同。--类似打电话

  • 无连接的网络服务

    无连接网络服务的两实体之间的通信不需要事先建立好一个连接。无连接网络服务有3种类型:数据报(Datagram)、确认交付(Confirmed Delivery)与请求回答(Request reply)。无连接服务以邮政系统为模式。

    每个报文(信件)带有完整的目的地址,并且每一个报文都独立于其他报文,由系统选定的路线传递。在正常情况下,当两个报文发往同一目的地时,先发的先到。但是,也有可能先发的报文在途中延误了,后发的报文反而先收到;而这种情况在面向连接的服务中是绝对不可能发生的。--类似发短信

传输控制协议(TCP)

  1. TCP全称是Transmission Control Protocol,中文名为传输控制协议,它可以提供可靠的、面向连接的网络数据传递服务。

    传输控制协议主要包含下列任务和功能:

  2. 确保IP数据报的成功传递。
    • 对程序发送的大块数据进行分段和重组。
    • 确保正确排序及按顺序传递分段的数据。
    • 通过计算校验和,进行传输数据的完整性检查。

    • 根据数据是否接收成功发送肯定消息。通过使用选择性确认,也对没有收到的数据发送否定确认。为必须使用可靠的、基于会话的数据传输程序,如客户端/服务器数据库和电子邮件程序,提供首选传输方法。
  3. TCP工作原理TCP的连接建立过程又称为TCP三次握手;
    • 首先发送方主机向接收方主机发起一个建立连接的同步(SYN)请求;
    • 接收方主机在收到这个请求后向发送方主机回复一个同步/确认(SYN/ACK)应答;
    • 发送方主机收到此包后再向接收方主机发送一个确认(ACK),此时TCP连接成功建立.一旦初始的三次握手完成,在发送和接收主机之间将按顺序发送和确认段。

      关闭连接之前,TCP使用类似的握手过程验证两个主机是否都完成发送和接收全部数据。完成三次握手,客户端与服务器开始传送数据。

三次握手示意图:

三次握手.png

TCP工作过程比较复杂,包括的内容如下。

  • TCP连接关闭:发送方主机和目的主机建立TCP连接并完成数据传输后,会发送一个将结束标记置1的数据包,以关闭这个TCP连接,并同时释放该连接占用的缓冲区空间。

  • TCP重置:TCP允许在传输的过程中突然中断连接。
  • TCP数据排序和确认*:在传输的过程中使用序列号和确认号来跟踪数据的接收情况。
  • TCP重传:在TCP的传输过程中,如果在重传超时时间内没有收到接收方主机对某数据包的确认回复,发送方主机就认为此数据包丢失,并再次发送这个数据包给接收方。
  • TCP延迟确认:TCP并不总是在接收到数据后立即对其进行确认,它允许主机在接收数据的同时发送自己的确认信息给对方。

  • TCP数据保护(校验):TCP是可靠传输的协议,它提供校验和计算来实现数据在传输过程中的完整性。

用户数据报协议(UDP)

UDP全称是User Datagram Protocol,中文名为用户数据报协议。UDP 提供无连接的网络服务,该服务对消息中传输的数据提供不可靠的、最大努力传送。这意味着它不保证数据报的到达,也不保证所传送数据包的顺序是否正确。

我最初就有一个疑惑:“既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?”在有些情况下UDP可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大地降低了执行时间,使速度得到了保证。

TCP与端口号

TCP和UDP都是IP层面的传输协议,是IP与上层之间的处理接口。TCP和UDP端口号被设计来区分运行在单个设备上的多重应用程序的IP地址。由于同一台计算机上可能会运行多个网络应用程序,所以计算机需要确保目标计算机上接收源主机数据包的软件应用程序的正确性,以及响应能够被发送到源主机的正确应用程序上。该过程正是通过使用TCP或UDP端口号来实现的。

--即每一个应用都会在网卡上注册一个端口号用来区分同一台设备上应用的之间的通信

在TCP和UDP头部分,有“源端口”和“目标端口”段,主要用于显示发送和接收过程中的身份识别信息。IP 地址和端口号合在一起被称为“套接字”。TCP端口比较复杂,其工作方式与UDP端口不同。UDP端口对于基于UDP的通信作为单一消息队列和网络端点来操作,而所有TCP通信的终点都是唯一的连接。

小主,按键盘右方向键 → 翻页可以跳过片头呢

  

上一篇:在魔都听周易课02 | 悟彻反

  

下一篇:深入浅出-iOS Block原理和内存中位置

  

本文标题:深入浅出-iOS的TCP/IP协议族剖析&&Socket

原文链接:http://i.she.vc/27755.html

和本文相似的内容:

    点击排行