网络基础知识

OSI网络七层协议

  1. 物理层:
    负责将机器语言的0.1转化为电压高低,脉冲光的闪灭输出给物理的传输介质(光纤)。
  2. 数据链路层:
    负责物理层上的通信传输,把0.1序列化为有意义的数据帧传给对端。通过Mac地址,目的是识别链接到同一传输介质上的设备。因此,这一把分层中mac地址信息的首部附加到网络层转发过来的数据上,发送到网络。
  3. 网络层:
    将数据传输到目标地址,目标地址可以是由多个网路或路由连接而成的某个地址,因此改层主要是寻找地址和路由的选择。
  4. 传输层:
    主要是用户负责建立两端节点的通信关系,保证数据传输安全,传输是直接连接双方节点的ip地址,不经过路由处理。如果A发送给B消息,传输过程中出现数据丢失或者网络出现异常只发送了部分信息到达B端,B端会反馈消息,告诉A,只收到了部分消息,A会将未发送的消息重新发送到B,比如迅雷下载资源的时候,可以暂停,下次继续按照上一次的进度下载
  5. 会话层:负责网络通信的建立和断开,选择网络通信的连接方式,是GET,POST,长连接,短连接。当负责传输数据发送请求时,把表示层的数据按照一定规律和标准拆分成数据块(每个数据库都有一个单独的附加首部信息,标记接收端和发送端ip)。当负责接收数据响应请求时:负责把比特流数据根据数据的每个节点拼接成完整的数据,会话层会在接收到接收到的数据前端附加首部信息,记录数据的传输顺序信息。
  6. 表示层: 数据的转化层。当负责传送数据发送请求时: 会将应用层封装的数据转化成网络通用的标准数据格式进行传递,当负责接收数据响应请求时: 会将会话层传入的网络通用标准格式数据转换为对应设备的数据。不同设备对同一比特流数据的解析可能会有不同的结果,表示层与表层之间为了识别编码格式,也会附加首部信息。
  7. 应用层:
    当负责传送数据发送请求时: 把需要发送的数据,按照应用的格式标准协议等封装成对应数据。当负责接收数据响应请求时:把数据按照应用的标准格式进行解析。例如在HTTP协议中,发送请求前要封装请求头,这些解析过程方式是根据应用层的协议而定的,每个协议格式不一样。如果不同应用标准格式不一样,会解析失败,无法正确显示数据内容,
    例如: A电脑是Mac电脑用的pages软件写一个文本,然后传给Bwindows电脑,B电脑接收到的是A电脑的数据,数据格式完全跟A电脑一样,但是B电脑上没有能解析A电脑pages软件数据的工具。所以B电脑用户无法读取该文件,文件之所以无法解析不是因为电脑端不一样,而是因为没有乳尖解析对象数据格式的应用,实际上数据格式的基本封装是应用层自身完成的,还没有到应用层这一步。拿HTTP说,当应用封装好需要传输的数据进行传输时(例如我们平时应用中把数据封装在字典里然后转成json字符串,这一步骤就是应用本身的封装),应用层会根据HTTP协议对数据进行处理(封装成HTTP的请求头),该协议会在传输的数据前端附加一个首部标签,该首部标签表明了发送数据内容和发送的地址
    image.png

    iOS中把上三层应用层
    image.png

    对于我们而言理解上也就主要是4个层,数据链路层,网络层,传输层,应用层
    TCP/UDP协议
    TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输层协议。
    三次握手
  • 首先客户端向服务器发起一个建立连接的同步请求(SYN)请求
  • 服务器在收到这个请求后向客户端回复一个同步/确认(SYN/ACK)的应答
  • 客户端在收到应答回应之后再向服务端发送一个确认(ACK),此时TCP连接成功


    image.png

四次挥手

四次挥手.png

  • 首先客户端发送一个FIN消息给服务端,客户端进入FIN_WAIT_1状态

  • 接着服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占一个序号), 服务端进入CLOSE_WAIT状态。

  • 服务端在回复完客户端的TCP断开请求后,不会马上进行TCP断开,服务器会先确保断开前,所有的传输的数据是否已经传输完毕,一旦确认数据传输完成,服务端发送一个FIN消息给客户端,服务端进入LAST_ACK状态。

  • 最后客户端收到FIN消息后,进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,
    服务端进入CLOSE转台,完成四次挥手。
    UDP协议
    UDP被称之为用户数据报协议位于传输层。提供非面向连接的网络服务,传送数据不需要和服务端建立连接,只需要知道数据需要发送到哪一个IP地址和监听端口即可,该服务传输的数据是不可靠的、可以由一点发送到到多点。这意味着它不保证数据报的到达只负责发送,也不保证所传送数据包的顺序是否正确。
    HTTP协议
    基本概念

  • 客户端(Client):移动应用(iOS、android等应用)

  • 服务器(Server):为客户端提供服务、提供数据、提供资源的机器

  • 请求(Request):客户端向服务器索取数据的一种行为

  • 响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端

HTTP协议的特点
HTTP协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
GET和POST对比和区别
GET和POST的主要区别表现在数据传递上

GET:在请求URL后面以?的形式拼接发给服务器的参数,多个参数之间用&隔开。
比如http://www.test.com/login?username=123&pwd=234&type=JSON由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB
POST:发给服务器的参数全部放在请求体中,理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)
HTTPS
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer):是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL

image.png

HTTPS和HTTP的区别主要为以下四点:
https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
参考链接

你可能感兴趣的:(网络基础知识)