网络编程@IT·互联网程序员

浅谈常用协议

2016-04-03  本文已影响188人  Kevin_wzx

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

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

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

  1. HTTP与HTTPS:
    二者使用不同的连接方式,端口也不一样,前者是80,后者是443;
    HTTPS即“安全超文本传输协议”,基于HTTP开发,使用安全套接字层(SSL)进行信息交换,是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议;简单说它就是HTTP的安全版

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

3.Http协议的作用

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

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

(1)在HTTP/1.1协议中,定义了8种发送http请求的方法
(2)最常用的是GET和POST(实际上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
屏幕快照 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
上一篇 下一篇

猜你喜欢

热点阅读