熟悉TCP,UDP,HTTP,HTTPS等⽹络协议,熟悉⽹络通信机
制及常⽤的数据传输协议
⼀,知识回顾--<⽹络基本概念>
1> 什么是OSI模型
OSI 模型(Open System Interconnection model)是⼀个由国际标准化组织 提出的概念模型,试图 供⼀个使各种不同的计算机和⽹络在世界范
围内实现互联的标准框架。
它将计算机⽹络体系结构划分为七层,每层都可以 供抽象良好的接⼝。了解 OSI 模型有助于理解实际上互联⽹络的⼯业标准——TCP/IP 协
议。
OSI 模型.png
2>七层模型介绍
物理层:
物理层负责最后将信息编码成电流脉冲或其它信号⽤于⽹上传输;
eg:RJ45等将数据转化成0和1;
数据链路层:
数据链路层通过物理⽹络链路 供数据传输。不同的数据链路层定义了不同的⽹络和协议特征,其中包括物理编址、⽹络拓扑结构、错误校验、数据帧序列以及流控;
可以简单的理解为:规定了0和1的分包形式,确定了⽹络数据包的形式;
⽹络层
⽹络层负责在源和终点之间建⽴连接;
可以理解为,此处需要确定计算机的位置,怎么确定?IPv4,IPv6!
传输层
传输层向⾼层 提供可靠的端到端的⽹络数据流服务。
可以理解为:每⼀个应⽤程序都会在⽹卡注册⼀个端⼝号,该层就是端⼝与端⼝的通信!常⽤的(TCP/IP)协议;
会话层
会话层建⽴、管理和终⽌表⽰层与实体之间的通信会话;
建⽴⼀个连接(⾃动的⼿机信息、⾃动的⽹络寻址);
表⽰层:
表⽰层 供多种功能⽤于应⽤层数据编码和转化,以确保以⼀个系统应⽤层发送的信息可以被另⼀个系统应⽤层识别;
可以理解为:解决不同系统之间的通信,eg:Linux下的QQ和Windows下的QQ可以通信;
应⽤层:
OSI 的应⽤层协议包括⽂件的传输、访问及管理协议(FTAM) ,以及⽂件虚拟终端协议(VIP)和公⽤管理系统信息(CMIP)等;
规定数据的传输协议;
3>常见的应⽤层协议
常见的应⽤层协议:
常见的应⽤层协议.png
互联⽹分层结构的好处: 上层的变动完全不影响下层的结构。
4>TCP/IP 协议基本概念
OSI 模型所分的七层,在实际应⽤中,往往有⼀些层被整合,或者功能分散到其他层去。TCP/IP 没有照搬 OSI 模型,也没有⼀个公认的 TCP/IP 层级模型,⼀般划分为三层到五层模型来 述 TCP/IP 协议。
在此描述⽤⼀个通⽤的四层模型来描述,每⼀层都和 OSI 模型有较强的相关性但是⼜可能会有交叉。
TCP/IP 的设计,是吸取了分层模型的精华思想——封装。每层对上⼀层 供服务的时候,上⼀层的数据结构是⿊盒,直接作为本层的数据,⽽不需要关⼼上⼀层协议的任何细节。
TCP/IP 分层模型的分层以以太⽹上传输 UDP 数据包如图所⽰;
UDP 数据包.png
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。
5>四层模型介绍
⽹络接⼝层
⽹络接⼝层包括⽤于协作IP数据在已有⽹络介质上传输的协议。
它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议, 供 TCP/IP 协议的数据结构和实
际物理硬件之间的接⼝。
可以理解为:确定了⽹络数据包的形式。
⽹间层
⽹间层对应于 OSI 七层参考模型的⽹络层,本层包含 IP 协议、RIP 协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含⽹间控制报⽂协议(Internet Control Message Protocol,ICMP)⽤来 供⽹络诊断信息;
可以理解为:该层时确定计算机的位置。
传输层
传输层对应于 OSI 七层参考模型的传输层,它 供两种端到端的通信服务。其中 TCP 协议(Transmission Control Protocol) 供可靠的数据流运输服务,UDP 协议(Use Datagram Protocol) 供不可靠的⽤户数据报服务。
TCP:三次握⼿、四次挥⼿;UDP:只发不管别⼈收不收得到--任性哈
应⽤层
应⽤层对应于 OSI 七层参考模型的应⽤层和表达层;
不明⽩的再看看7层参考模型的描述。
6>数据包
宽泛意义的数据包:每⼀个数据包都包含"标头"和"数据"两个部分."标头"包含本数据包的⼀些说明."数据"则是本数据包的内容.
细分数据包:
应⽤程序数据包: 标头部分规定应⽤程序的数据格式.数据部分传输具体的数据内容.*** ——对应上图中的数据!***
TCP/UDP数据包:标头部分包含双⽅的发出端⼝和接收端⼝. UDP数据包:'标头'长度:8个字节,"数据包"总长度最⼤为65535字节,正好放进⼀个IP数据包. TCP数据包:理论上没有长度限制,但是,为了保证⽹络传输效率,通常不会超过IP数据长度,确保单个包不会被分割. ***——对应上图中的UDP数据!***
IP数据包: 标头部分包含通信双⽅的IP地址,协议版本,长度等信息. '标头'长度:20~60字节,"数据包"总长度最⼤为65535字节. *** ——对应上图中的IP数据***
以太⽹数据包: 最基础的数据包.标头部分包含了通信双⽅的MAC地址,数据类型等. '标头'长度:18字节,'数据'部分长度:46~1500字节. ***——对应上图中的以太⽹数据***
UDP(User Datagram protocol)⽤户数据报协议,它只提供应⽤进程寻址和简单的差错检测,并不提供其他功能。
TCP(Transmission Control Protocol,传输控制协议)是⾯向连接的协议,也就是说,在收发数据前,必须和对⽅建⽴可靠的连接。⼀个TCP连接必须要经过三次“对话”才能建⽴起来,其中的过程⾮常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第⼀次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机⼀个在发送,⼀个在接收,协调⼯作)的数据包:“可以,你什么时候发?”,这是第⼆次对话;主机A再发出⼀个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的⽬的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。7>TCP/IP 协议族常⽤协议
应⽤层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
传输层:TCP,UDP
⽹络层:IP,ICMP,OSPF,EIGRP,IGMP
数据链路层:SLIP,CSLIP,PPP,MTU
*  重要的 TCP/IP 协议族协议进⾏简单介绍:
IP(Internet Protocol,⽹际协议)是⽹间层的主要协议,任务是在源地址和和⽬的地址之间传输数据。IP 协议只是尽最⼤努⼒来传输数据包,并不保证所有的包都可以传输到⽬的地,也不保证数据包的顺序和唯⼀。
IP 定义了 TCP/IP 的地址,寻址⽅法,以及路由规则。现在⼴泛使⽤的 IP 协议有 IPv4 和 IPv6 两种:IPv4 使⽤ 32 位⼆进制整数做地址,⼀般使⽤点分⼗进制⽅式表⽰,⽐如 192.168.0.1。
IP 地址由两部分组成,即⽹络号和主机号。故⼀个完整的 IPv4 地址往往表⽰为 192.168.0.1/24 或192.168.0.1/255.255.255.0 这种形式。
IPv6 是为了解决 IPv4 地址耗尽和其它⼀些问题⽽研发的最新版本的 IP。使⽤ 128 位整数表⽰地址,通常使⽤冒号分隔的⼗六进制来表⽰,并且可以省略其中⼀串连续的 0,如:fe80::200:1ff:fe00:1。
⽬前使⽤并不多!
ICMP(Internet Control Message Protocol,⽹络控制消息协议)是 TCP/IP 的核⼼协议之⼀,⽤于在 IP ⽹络
中发送控制消息, 供通信过程中的各种问题反馈。 ICMP 直接使⽤ IP 数据包传输,但 ICMP 并不被视为 IP 协议的⼦协议。常见的联⽹状态诊断⼯具⽐如依赖于 ICMP 协议;
TCP(TransmissionControlProtocol,传输控制协议)是⼀种⾯向连接的,可靠的, 基于字节流传输的通信协议。TCP 具有端⼝号的概念,⽤来标识同⼀个地址上的不同应⽤。 述 TCP 的标准⽂档是 RFC793。
UDP(UserDatagramProtocol,⽤户数据报协议)是⼀个⾯向数据报的传输层协议。UDP 的传输是不可靠的,简单的说就是发了不管,发送者不会知道⽬标地址的数据通路是否发⽣拥塞,也不知道数据是否到达,是否完整以及是否还是原来的次序。它同 TCP ⼀样有⽤来标识本地应⽤的端⼝号。所以应⽤ UDP 的应⽤,都能够容忍⼀定数量的错误和丢包,但是对传输性能敏感的,⽐如流媒体、DNS 等。
ECHO(EchoProtocol,回声协议)是⼀个简单的调试和检测⼯具。服务器器会原样回发它收到的任何数据,既可以使⽤ TCP 传输,也可以使⽤ UDP 传输。使⽤端⼝号 7 。
DHCP(DynamicHostConfigrationProtocol,动态主机配置协议)是⽤于局域⽹⾃动分配 IP 地址和主机配置的协议。可以使局域⽹的部署更加简单。
DNS(DomainNameSystem,域名系统)是互联⽹的⼀项服务,可以简单的将⽤“.” 分隔的⼀般会有意义的域名转换成不易记忆的 IP 地址。
⼀般使⽤ UDP 协议传输, 也可以使⽤ TCP,默认服务端⼝号 53。
FTP(FileTransferProtocol,⽂件传输协议)是⽤来进⾏⽂件传输的标准协议。 FTP 基于 TCP 使⽤端⼝号 20 来传输数据,21 来传输控制信息。
TFTP(Trivial File Transfer Protocol,简单⽂件传输协议)是⼀个简化的⽂件传输协议,其设计⾮常简单,通过少量存储器就能轻松实现,所以⼀般被⽤来通过⽹络引导计算机过程中传输引导⽂件等⼩⽂件;
SSH(SecureShell,安全Shell),因为传统的⽹络服务程序⽐如TELNET本质上都极不安全,明⽂传说数据和⽤户信息包括密码,SSH 被开发出来避免这些问题, 它其实是⼀个协议框架,有⼤量的扩展冗余能⼒,并且 供了加密压缩的通道可以为其他协议使⽤。
POP(PostOfficeProtocol,邮局协议)是⽀持通过客户端访问电⼦邮件的服务, 现在版本是 POP3,也有加密的版本 POP3S。协议使⽤TCP,端⼝ 110。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是现在在互联⽹上发送电⼦邮件的事实标准。使⽤ TCP 协议传输,端⼝号25。
HTTP(HyperTextTransferProtocol,超⽂本传输协议)是现在⼴为流⾏的WEB ⽹络的基础,HTTPS 是 HTTP 的加密安全版本。协议通过TCP 传输,HTTP 默认使⽤端⼝ 80,HTTPS 使⽤ 443。
⼆,iOS的TCP/IP协议族剖析
1.上传数据是怎么和后台服务器交互的
后台和前端的交互⼿段是通过⽹络接⼝来实现的.上传数据通过http请求上传,iOS9之后是https请求,需要把数据转换成data类型,然后拼接到POST请求体(body)中,通过请求数据⼀起发送到服务器上。
对于服务器端的返回的格式,⼀般使⽤json格式返回。它有优势,传递数据相对⼩,ios客户端也容易解析。⾄于服务器端你可以有多种选择,/" target="_blank">asp,java,php均可。
2.传输层中的协议--TCP/UDP
传输层它为应⽤层提供会话和数据报通信服务。
传输层承担OSI传输层的职责。
tcpip协议中传输层的协议传输层的核⼼协议是TCP和UDP。
TCP提供⼀对⼀的、⾯向连接的可靠通信服务。TCP建⽴连接,对发送的数据包进⾏排序和确认,并恢复在传输过程中丢失的数据包。与TCP不同,UDP提供⼀对⼀或⼀对多的、⽆连接的不可靠通信服务。
不论是TCP/IP还是在OSI参考模型中,任意相邻两层的下层为服务提供者,上层为服务调⽤者。下层为上层提供的服务可分为两类:⾯向连接服务和⽆连接服务。
* ⾯向连接的⽹络服务
⾯向连接的⽹络服务⼜称为虚电路(Virtual Circuit)服务,它具有⽹络连接建⽴、数据传输和⽹络连接释放三个阶段。是按顺序传输可靠的报⽂分组⽅式,适⽤于指定对象、长报⽂、会话型传输要求。
⾯向连接服务以电话系统为模式。要和某个⼈通话,⾸先拿起电话,拨号码,通话,然后挂断。同样在使⽤⾯向连接的服务时,⽤户⾸先要建⽴连接,使⽤连接,然后释放连接。连接本质上像个管道:发送者在管道的⼀端放⼊物体,接收者在另⼀端按同样的次序取出物体;其特点是收发的数据不仅顺序⼀致,⽽且内容也相同。--类似打电话
* ⽆连接的⽹络服务
⽆连接⽹络服务的两实体之间的通信不需要事先建⽴好⼀个连接。⽆连接⽹络服务有3种类型:数据报(Datagram)、确认交付(Confirmed Delivery)与请求回答(Request reply)。
⽆连接服务以邮政系统为模式。每个报⽂(信件)带有完整的⽬的地址,并且每⼀个报⽂都独⽴于其他报⽂,由系统选定的路线传递。在正常情况下,当两个报⽂发往同⼀⽬的地时,先发的先到。但是,也
有可能先发的报⽂在途中延误了,后发的报⽂反⽽先收到;⽽这种情况在⾯向连接的服务中是绝对不可能发⽣的。--类似发短信
* TCP--传输控制协议
1. TCP全称是Transmission Control Protocol,中⽂名为传输控制协议,它可以提供可靠的、⾯向连接的⽹络数据传递服务。传输控制协
议主要包含下列任务和功能:
确保IP数据报的成功传递。
对程序发送的⼤块数据进⾏分段和重组。
确保正确排序及按顺序传递分段的数据。
通过计算校验和,进⾏传输数据的完整性检查。
根据数据是否接收成功发送肯定消息。通过使⽤选择性确认,也对没有收到的数据发送否定确认。
为必须使⽤可靠的、基于会话的数据传输程序,如客户端/服务器数据库和电⼦邮件程序,提供⾸选传输
⽅法。
2. TCP⼯作原理
TCP的连接建⽴过程⼜称为TCP三次握⼿;
⾸先发送⽅主机向接收⽅主机发起⼀个建⽴连接的同步(SYN)请求;
接收⽅主机在收到这个请求后向发送⽅主机回复⼀个同步/确认(SYN/ACK)应答;
发送⽅主机收到此包后再向接收⽅主机发送⼀个确认(ACK),此时TCP连接成功建⽴.
⼀旦初始的三次握⼿完成,在发送和接收主机之间将按顺序发送和确认段。关闭连接之前,TCP使⽤类似的握⼿过程验证两个主机是否都完成发送和接收全部数据。
完成三次握⼿,客户端与服务器开始传送数据。
三次握⼿⽰意图:
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通信的终点都是唯⼀的连接。每个
TCP连接由两个端点唯⼀识别。由于所有TCP连接由两对 IP 地址和TCP 端⼝唯⼀识别(每个所连主机都有⼀个地址/端⼝对),因此每个TCP服务器端⼝都能提供对多个连接的共享访问
再看⼀下IP数据包和TCP/UDP的数据包
数据包.png
3.HTTP协议
超⽂本传输协议(HTTP,HyperText Transfer Protocol)是互联⽹上应⽤最为⼴泛的⼀种⽹络协议。
http协议规定了客户端和服务器之间的数据传输格式.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。