What happened from entering the URL to displaying the page?

从输入URL到显示页面经历了什么? 这个过程可以大致分为两个部分:网络通信和页面渲染。 一、网络通信 互联网内各网络设备间的通信都遵循TCP/IP协议,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。分层由高到低分别为:应用层、传输层、网络层、数据链路层。发送端从应用层往下走,接收端从数据链路层网上走。如图所示: 1. 在浏览器中输入url 用户输入url,例如h...

the difference of BIO、NIO、AIO

BIO、NIO、AIO区别

一、BIO

在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。

二、NIO

NIO本身是基于事件驱动思想来完成的,其主要想解决的是BIO的大并发问题: 在使用同步I/O的网络应用中,如果要同时处理多个客户端请求,或是在客户端要同时和多个服务器进行通讯,就必须使用多线程来处理。也就是说,将每一个客户端请求分配给一个线程来单独处理。这样做虽然可以达到我们的要求,但同时又会带来另外一个问题。由于每创建一个线程,就要为这个线程分配一定的内存空间(也叫工作存储器),而且操作系统本身也对线程的总数有一定的限制。如果客户端的请求过多,服务端程序可能会因为不堪重负而拒绝客户端的请求,甚至服务器可能会因此而瘫痪。

AIO blocking model

AIO模型

1. 在系统层面分析IO模型

当我们从网络中或者其他进程中接收到数据时,这个数据会被拷贝到系统内核的缓冲区,然后从内核的缓冲区中再复制到我们应用程序对应的缓冲区中,这样我们才能实现从应用程序中取得这个数据。

1.1 BIO模型

在这里插入图片描述
在这里插入图片描述

NIO blocking model

NIO模型

1. 概述

1.1 翻译翻译?什么叫NIO?

NIO:我认为翻译成Non-Blocking,更加的通俗直白,相比于BIO,也有一个对比,叫他非阻塞IO最好不过了

  • 它和BIO有以下的区别
    在这里插入图片描述
  • Channel是双向的,即可以读又可以写,相比于Stream,它并不区分出输入流和输出流,而且Channel可以完成非阻塞的读写,也可以完成阻塞的读写

BIO blocking model

BIO阻塞模型

1. BIO阻塞模型

在这里插入图片描述
简述BIO模型中服务端与客户端的响应过程

  1. 服务器serverSocket先要和端口进行绑定
  2. 绑定完成后,执行accept方法,等待客户端的连接,这个方法是阻塞式调用,也就是说,要一直等待客户端的连接响应,不做其他事情,一直等,(被阻塞的还有InputStream.read()、OutputStream.write(),这两个也会一直等待客户端的响应)
  3. 客户端创建Socket对象,绑定服务器的ip地址端口号,与服务器进行连接
  4. 服务器接收到客户端的连接请求,accept方法获取到客户端的socket信息,连接成功
  5. 服务器与客户端创建各自的io流,实现全双工通信
  6. 之后便可以随时结束连接

I/O model

I/O模型

1. java.io下的字符流和字节流

在这里插入图片描述
在这里插入图片描述

1.1 字符流

字符流更加的方便我们使用,一般字符都是由多个字节来形成的,若我们使用字节流传输,则还需要我们自己将其转换为字符,若我们直接使用字符流的话,这样就能直接读取与输出字符。
在这里插入图片描述

Java network programming

@来源CSDN:方圆

1. URL地址的构造和解析

在这里插入图片描述
我们看如上地址,一般情况下.root根域名的部分会被省略。而URL的解析过程就是从右向左进行解析,将地址转换为IP地址,进行访问。

1.1 域名的层级

在这里插入图片描述
在这里插入图片描述

TCP/IP

TCP/IP协议

计算机网络概论

计算机网络