浅谈常用协议

作者: Kevin_wzx | 来源:发表于2016-04-03 11:38 被阅读188次

    1.网络的结构(OSI 7层)

    1.划分方式有多种,其中osi 7层是国际标准;而五层协议体系结构中无会话层和表示层
    2.OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,从下往上分别是: 物理层-->数据链路层-->网络层-->传输层-->会话层-->表示层-->应用层

    2.HTTP协议和TCP/IP协议族之间的联系

    • 不管是移动客户端还是PC端,访问远程的网络资源经常使用HTTP协议(超文本传输协议【Hypertext Transfer Protocol 】),是Web联网的基础,也是手机联网常用的协议之一,http协议是在网络开发中最常用的协议;访问的是远程的网络资源,格式是http://
    1. HTTP与HTTPS:
      二者使用不同的连接方式,端口也不一样,前者是80,后者是443;
      HTTPS即“安全超文本传输协议”,基于HTTP开发,使用安全套接字层(SSL)进行信息交换,是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议;简单说它就是HTTP的安全版

    1.HTTP是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
    2.HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”

    • HTTP协议是应用层协议,主要解决如何包装数据;而TPC/IP协议是传输层协议,主要解决数据如何在网络中传输

      解释二者联系:
      1.“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,所以想要使传输的数据有意义,则必须使用到应用层协议”
      2.TCP/IP是无论上层让他传啥数据,他都通过与IP协议的操作,把这些东西分段,然后输送,同时保证在这个过程中,数据不会丢,如果丢了一块,他还得想办法重新传一次,这就是TCP/IP的意义;而HTTP主要是用来访问网页的,比TCP更上层的协议
      3.可以认为TCP/IP协议就是搬运工,保证搬动的东西不被损坏; HTTP是做业务的,用来决定要不要搬运,以及如何搬运,从哪去搬运。
      4.Http协议是建立在TCP协议之上的一种应用。由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求

    3.Http协议的作用

    规定客户端和服务器之间的数据传输格式
    让客户端和服务器能有效地进行数据沟通

    • 完整的http通信过程,可以分为2大步骤:

    (1)请求 :客户端向服务器索要数据
    (2)响应:服务器返回客户端相应的数据

    • 发送Http请求的方法

    (1)在HTTP/1.1协议中,定义了8种发送http请求的方法
    (2)最常用的是GET和POST(实际上GET和POST都能办到增删改查)

    • 3.1简单认识下GET 和 POST

    3.1.1二者对比(主要区别表现在数据传递上):

    GET:
    1).在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开
    2).由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB
    
    POST:
    1).发给服务器的参数全部放在请求体中
    2).理论上,POST传递的数据量没有限制
    

    3.1.2二者选择

    1).如果要传递大量数据,比如文件上传,只能用POST请求
    2).GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST
    3).p如果仅仅是索取数据(数据查询),建议使用GET
    4).p如果是增加、修改、删除数据,建议使用POST
    
    • 3.2 Http通信过程


    屏幕快照 2016-08-31 下午3.50.48.png

    3.TCP/IP与UDP/IP区别

    TCP/IP的三次握手(形象解释):
    1.主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我
    2.主机B也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了;你要用哪个序列号作为起始数据段来回应我
    3.主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了
    补充:3次握手的特点
    * 握手过程中传送的包里不包含数据(这个数据是应用层的数据)
    * 三次握手完毕后,客户端与服务器才正式开始传送数据
    * 理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去
    * 断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”
      (过程就不细写了,就是服务器和客户端交互,最终确定断开)
    

    1.TCP/IP:是传输控制协议;UDP是用户数据报协议(UDP程序结构较简单);均工作在传输层
    2.TCP是面向连接的,传输是可靠的 (确认收发);而UDP是面向非链接的,传输是不可靠的 (对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,因为不必进行收发数据的确认,所以UDP的实时性更好)
    3.由于上面2的原因-->TCP应用于传输大量的数据,速度慢;UDP传输少量的数据,速度快
    4.另外:程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,提高效率
    5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证

    4.TCP/IP与Socket(套接字)

    1.套接字概念
    套接字(socket):源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字;其用于标识客户端请求的服务器和服务。它是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

    2.二者之间的联系
    Socket 实际上是对TCP/IP协议的封装,其本身并不是协议,而是一个调用接口(API);通过Socket,我们才能使用TCP/IP协议。但Socket跟TCP/IP协议实际也没有必然的联系;Socket编程接口在设计的时候,就希望也能适应其他的网络协议;所以说,Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、listen、connect、accept、send、read和write等等。

    3.TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。就像操作系统会提供标准的编程接口,比如Win32编程接口一样,TCP/IP也必须对外提供编程接口,这就是Socket编程接口;啊噢,原来就是这么回事滴😂

    4.利用Socket建立网络连接的步骤

    建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket ;套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

    1、服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,
    实时监控网络状态,等待客户端的连接请求。
    2、客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为
    此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址
    和端口号,然后就向服务器端套接字提出连接请求。
    3、连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应
    客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户
    端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其
    他客户端套接字的连接请求。
    

    5.直接上图瞅一眼呗

    以下图片将说明IP协议,TCP协议,DNS协议与HTTP协议的关系

    1401034-0c9795373f536429.jpg

    6.相关联想

    6.1 URL

    1.什么是URL
    (1)URL的全称是UniformResource Locator(统一资源定位符)
    (2)URL的基本格式 =协议://主机地址/路径
    (3)协议:不同的协议,代表着不同的资源查找方式、资源传输方式
    (4)主机地址:存放资源的主机(服务器)的IP地址(域名)
    (5)资源在主机(服务器)中的具体位置

    2.URL中常见的协议
    (1)HTTP : 超文本传输协议, 格式是 http://
    (2)file :访问的是本地计算机上的资源,格式是 file://(不用加主机地址)
    (3)mailto:访问的是电子邮件地址,格式是 mailto:
    (4)FTP:访问的是共享主机的文件资源,格式是 ftp://

    6.2 iOS中发送Http请求的方案
    屏幕快照 2016-08-31 下午3.48.19.png

    相关文章

      网友评论

        本文标题:浅谈常用协议

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