• 网络七层协议包含

    • 物理层:负责将数字信号转换为物理信号,‌如电缆、‌光缆等,‌确保数据以适当的方式在传输媒体上传输
    • 数据链路层:将原始比特流分割成帧,‌并添加地址信息,‌确保数据在直接连接的设备之间正确传输(硬件部分 )
    • 网络层:用来传输的的数据包 ( ip icmp)
      • ipv/4 127.0.0.1 四个字节组成(0-225)
      • ipv/6 128位 8个无符号整数
    • 传输层(TCP传输控制协议、UDP用户数据报协议)
    • 会话层:管理会话的建立、‌维护和结束,‌处理会话层面的错误和同步问题。‌
    • 表示层:负责数据的格式转换、‌加密和解密,‌确保应用程序能够正确地解释数据。‌
    • 应用层(http/https协议、 FTP MIP)
  • TCP/IP协议,四层架构参考模型。

    • 包含链路层、网络层、传输层、应用层。
    • TCP/IP协议是协议群的统称,其包含tcp、udp、ftp、Telnet、http等等,这些都属于TCP/IP协议。
    • TCP协议是传输层的协议。面向连接的、可靠的、基于字节流的传输层通信协议。将应用层的数据流分割成报文段并发送给目标节点的TCP层。数据包都有序号,对方收到则发送ack确认,未收到则重传。使用校验和来校验数据在传输过程中是否有误。
    • IP协议是无连接的通信协议,不会占用两个正在通信的计算机之间的通信线路。ip降低了对网络线路的需求,每条线可以同时满足许多不同计算机之间的通信需要,通过ip消息或者其他数据会被分割为较小的独立的包,并通过internet网在计算机之间进行传送,ip负责将它的包路由到它的目的地,但是ip协议没有做数据包是否按照顺序发送,或者包是否被破坏,所以Ip数据包是不可靠的。需要由ip的上层协议做出控制。]
  • TCP链接的三次握手(一次挥手)

    • 第一次握手:建立连接时,客户端发送SYN包(syn=x)到服务器,并进入SYN_SEND状态即同步已发送,等待服务器确认。
    • 第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态即同步已收到。
    • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTAB LISHED状态即连接已建立,完成三次握手。
    • TCP的四次挥手,挥手是为了终止连接,就是终止一个TCP连接的时候需要客户端和服务器端总共发送4个包,以确认连接的断开。客户端或者服务器端任意一方触发close断开连接。
  • udp:只负责发送,不关注后续结果

  • Socket:TCP/IP协议的抽象

    • Socket是对TCP/IP协议的抽象,是操作系统对外开发的接口。Socket是基于从打开,到读或者写,再到关闭的模式。
    • 两个进程之间要通讯,最基本的是互相同步一个唯一标志。
    • 本地使用同一个pid;网络中可能会存在冲突pid问题;因此使用了ip+port的形式确认唯一标志。
  • Socket通信流程
    在这里插入图片描述

  • 超文本传输协议HTTP(基于请求与响应模式的无状态的应用层协议,常基于TCP的连接方式)

    • TCP是传输层协议,HTTP是应用层协议,HTTP是基于TCP协议的一种连接方式
    • HTTP1.1 版本中给出一种持续连接的机制keep-alive,绝大多数web开发都是构建在http上面的web应用。
    • 特点一、支持客户端和服务器端模式。
      • HTTP协议工作于客户端和服务器端架构之上的,浏览器作为HTTP客户端通过URL向HTTP服务器端即web服务器发送所有请求。WEB服务器根据接收到的请求向客户端发送响应信息。
    • 特点二、简单快速。
      • 客户端向服务器端请求服务的时候,只需要传送请求方法和请求路径,请求方法常用的有GET、POST、PUT、DELETE等等。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
    • 特点三、灵活。
      • HTTP允许传输任意类型的数据对象。正在传输的对象由context type加以标记。
    • 特点四、无连接。
      • 无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答以后即断开连接。采用该方式节省传输时间。从HTTP1.1起,默认使用了长连接,即服务器需要等待一定时间后才断开连接,以保证连接特性。
      • 虽然目前的技术,如keep alive使用了长连接优化效率,但是这些都是属于HTTP请求之外的,也即在每个独立的http请求中,你是无法知道当前的http是否处于长连接的状态,你始终会认为http请求在处理结束以后连接就会关闭,这是http的特性。长连接可以认为是下层实现对上层透明。
    • 特点五、无状态。
      • http协议是无状态协议,无状态是指协议对事物处理没有记忆能力,缺少状态意味着如果后续处理需要前段信息则必须被重新传输,这样可能会导致每次连接传送的数据量增大。另一方面在服务器不需要先前信息的时候,它的应答就较快。
      • HTTP协议目前处于多个版本共存的情况(HTTP1.0版本,HTTP1.1版本,HTTP2.0版本)。HTTP1.1版本相对于HTTP1.0版本引入了keep alive长连接技术。
  • HTTP的请求结构(HTTP请求报文),主要包含请求行、请求头部、空行、请求正文四部分组成。

    • 请求行包含三个部分(请求方法、URL路径、协议版本),请求方法、空格、URL路径、空格、协议版本、回车符、换行符。
    • 请求头部有若干个报头组成,每个报头包含,头部字段名、分号、值、回车符、换行符。即使请求正文没有内容,也会空一行出来的。
    • HTTP的响应结构(HTTP响应报文),发送请求报文以后,正常情况下会收到响应报文。主要包含状态行、响应头部、空行、响应正文四部分组成。
  • 请求响应的步骤

    • 客户端连接到web服务器,一个http客户端通常是浏览器与web服务器的http端口,默认端口号是80,建立一个tcp套接字连接。
    • 然后发送http请求,即通过tcp套接字,客户端向web服务器发送一个文本的请求报文。
    • 然后服务器接受到客户端的请求并返回HTTP响应。web服务器解析该请求定位请求资源,服务器将资源副本写到tcp套接字由客户端读取。
    • 然后释放TCP连接。若连接模式是CLOSE,则服务器主动关闭tcp连接,客户端被动关闭tcp连接,释放tcp连接。若连接模式是keep alive,咋该连接会保持一段时间,在该时间内可以继续接受请求。
    • 然后客户端浏览器解析HTML内容。并进行解析,客户端浏览器首先解析状态行,查看表名请求是否成功的状态代码,然后解析每一个响应头,响应头告知以下若干字节的HTML文档和文档的字符集,客户端浏览器读取响应数据HTML,根据html语法对其进行格式化,并在浏览器窗口中进行解释。
  • 在浏览器地址栏键入URL,按下回车以后经历的流程

    • DNS解析,浏览器会根据URL逐层查询DNS服务器缓存,解析URL中的域名所对应的IP地址。DNS缓存从近到远依次是浏览器缓存、系统缓存、路由器缓存、ips服务器缓存、根域名服务器缓存、顶级域名服务器缓存。从那个缓存找到对应的ip以后直接返回,不再查询后面的缓存
    • TCP连接。找到ip地址以后会根据ip地址和默认端口80,和服务器建立tcp连接。该步骤即是三次握手了。
    • 发送HTTP请求。此时浏览器会发送读取文件的http请求,该请求将发送给服务器。
    • 服务器处理请求并返回HTTP报文。服务器对浏览器请求做出响应并把对应的带有html文本的http响应报文发送给浏览器。
    • 浏览器解析渲染页面。然后浏览器收到html并在显示窗口内进行渲染。
    • 连接结束。最后浏览器是否了TCP连接。该步骤即是四次挥手。
  • HTTP和HTTPS

    • HTTPS相较于HTTP增加了SSL或者TSL(具有保护交换数据隐私,以及完整性,提供对网上服务器身份认证的功能,是安全版的http)
    • SSL(Securiy Sockets Layer,安全套接层),为网络通信提供安全以及数据完整性的一种安全协议,SSL位于TCP与各应用层之间,是操作系统对外的API,SSL3.0以后更名为TLS。采用身份验证和数据加密保证网络通信的安全和数据的完整性。
  • HTTP1.0和HTTP2.0

    • 首部压缩:使用HPACK算法对header的数据进行压缩,提高网络传输效率(静态字典:在客户端和服务器同时维护一张头信息表,常用字段对应索引号,只发送索引号;动态字典:不在静态字典里的自行构建动态字典;Huffman编码压缩数据)。
    • 二进制格式:2.0不在使用纯文本的报文,采用二进制格式,增加了数据传输的效率,并称为头信息帧和数据帧。
    • 多路复用:2.0同一个连接并发处理多个请求,1.1需要建立多个TCP连接进行并发处理,建立TCP连接产生开销。
    • 服务器推送:服务器可以在没有请求的情况下向客服端推送资源,当客户端请求该资源时,直接从缓存中获取。
  • uri和url的区别:

    • url属于uri,url是资源地址,uri是资源
    • Url相当于一个唯一地址:http://www.cfca.com.cn/chanpin/chanpin.htm
      • http://:代表资源所使用的应用层传输协议
      • www:代表一个web(万维网)服务器
      • cfca.com.cn:代表服务器的域名
      • chanpin.htm:一个被访问的页面
  • Cookie和Session的区别

    • Cookie解决HTTP的无状态方案;Cookie由客户端生成,并以文本形式保存;通过HTTP的请求头传递到服务端。
    • Seesion机制,是服务端保存的信息。
    • Session两种实现方式
      • 基于cookie传递(tomcat默认,如被禁用cookie,则会使用URL回写)
        • 服务端将生成seesionId 通过cookie响应给客户端;客户端请求的时候也通过cookie传递给服务端。
      • URL回写
        • 服务器在发送给客户端的所有链接中,都会带着sessionId
  • 文件传输协议FTP

    • 从一个系统拷贝文件到另一个系统
  • 远程登录服务协议Telnet

    • qq.compop.qq.comsmtp.qq.comSMTP服务器需要身份验证
      • POP3/SMTP协议
        • 接收邮件服务器:pop.exmail.qq.com (端口 110),使用SSL,端口号995
        • 发送邮件服务器:smtp.exmail.qq.com (端口 25),使用SSL,端口号465或587
      • IMAP协议
        • 接收邮件服务器:imap.exmail.qq.com (端口 143),使用SSL,端口号993
        • 发送邮件服务器:smtp.exmail.qq.com (端口 25),使用SSL,端口号465或587
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐