网页请求流程

  1. 浏览器解析url查找域名对应的ip地址

    DNS解析,过程:(浏览器缓存、路由器缓存、DNS服务器缓存)

  2. 浏览器向web服务器发送HTTP请求

    Cookies会随请求发送给服务器

  3. 服务器处理

    处理请求、参数、cookies,生成html响应

  4. 服务器返回html响应

  5. 客户端解析响应,显示页面。

    2-5涉及协议: TCP:与服务器建立连接。 IP:建立TCP协议需要发送数据,发送数据网络层使用IP协议。 OSPF:IP数据包在路由器之间,路由选择使用OSPF协议。 ARP:路由在与服务器通信时,需要将IP地址转化为MAC地址,需要ARP协议。 HTTP:在TCP建立后,使用HTTP访问网页。

  • 总的
    • DNS解析
    • TCP连接
    • HTTP请求发送
    • 服务器HTTP返回
    • 浏览器渲染
    • 连接结束

HTTP请求过程

  1. 浏览器根据域名解析IP地址(DNS),并查DNS缓存
  2. 浏览器与WEB服务器建立一个TCP连接
  3. 浏览器给WEB服务器发送一个HTTP请求(GET/POST):一个HTTP请求报文由请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。
  4. 服务端响应HTTP响应报文,报文由状态行(status line)、相应头部(headers)、空行(blank line)和响应数据(response body)4个部分组成。
  5. 浏览器解析渲染

TCP和UDP区别

  1. TCP面向连接,UDP是无连接的,即发送数据之前不需要建立连接。
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流,UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
  4. 每一条TCP连接只能是点到点的,UDP支持一对一,一对多,多对一和多对多的交互通信。
  5. TCP首部开销20字节,UDP的首部开销小,只有8个字节。
  6. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

    优缺点

  • TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。
  • UDP的优点: 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点: 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输。什么时候应该使用UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP。

http不报错状态,如何保存用户状态

  • Session主要作用就是铜棍服务器记录用户状态
  • Session保存方法:内存(redis)或数据库,
  • Session保存服务端,在Cookie中添加Session ID跟踪。若Cookie被禁用,利用URL重写把ID放在URL后面。

    Cookie 和Session

  • Cookie 和Session都是用来跟踪浏览器用户身份信息的会话方式,存储位置不一样。

  • Cookie自动填信息。网站的保持登录:Cookie存了Token,根据Token值查找用户(为安全一般重新登录要重写Token)。
  • Session通过服务端记录,(场景购物车),服务端给特点的用户创建特定的Session之后就可标识这个用户并跟踪。

    Cookie 和Session和token

  • http是无状态协议

  • 为解决用户频繁登录问题,C/S共同维护一个会话就是session,可根据session id判断是否是同一个用户。但是随着用户越来越多,服务器开销大;集群部署还要考虑同步。
  • cookie是保存在客户端,请求时把cookie一并发送给服务端。服务器如何知道是哪个cookie呢,验证成了问题。
  • 加密令牌token应运而生,服务的发送一个令牌给客户端,令牌保存id和密匙,下次请求时通过headers传给服务端,由于密钥别人不知道,只有服务端知道,就可验证无法伪造。

    URL与URI
  • URI:统一资源标志,符标识一个资源

  • URL:统一资源定位符,提供资源路径,是一种具体的URI

    HTTP与HTTPS
  • 端口,80 ,443

  • HTTP运行在TCP,传输是明文的,C/S都无法验证对方的身份。
  • HTTPS是运行在SSL/TLS之上的HTTP,SSL/TLS运行在TCP之上。传输内容经过加密,对称加密,但对称加密的密钥用服务器方的整数进行了非对称加密。
  • HTTPS安全性高,消耗高。
  • 对称加密:同密匙、快。DES、AES
  • 非对称加密:密钥不同,接收方生成一对公私钥,公钥加密私钥解密、慢。RSA、DSA
    网络 - 图1
    数字签名
    网络 - 图2

  • TCP和UDP区别? TCP如何保证传输可靠性?

    1.应用数据被分割成 TCP 认为最适合发送的数据块。2. TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。3. 校验和: TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。4. TCP 的接收端会丢弃重复的数据。5. 流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。(TCP 利用滑动窗口实现流量控制)6. 拥塞控制:当网络拥塞时,减少数据的发送。7. ARQ 协议:也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。8. 超时重传:当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段