JavaWeb-01-Http网络协议-01-互联网通信
JavaWeb-01-Http网络协议-01-互联网通信
1.什么是互联网通信
张三暑假去叙利亚打工,拿工资买了一部好康的电影。
此时,在北京的哥们李四剧荒,用电脑发消息给张三,问有什么好康的电影。
张三立即回复:我这里有部好康的电影,发给你。说罢把电影通过自己的电脑发送给了李四的电脑。
李四接收张三发来的电影后,自己的电脑上也有了这部电影。
两台计算机通过网络实现文件共享行为,这就是互联网通信。
2.互联网通信过程角色划分
1.客户端计算机:发送请求,索要资源文件的计算机。(上图中李四的计算机)
2.服务端计算机:回应请求,并提供对应资源文件的计算机。(上图中张三的计算机)
3.互联网通信模型
3.1 C/S通信模型
C/S通信模型就是客户端软件<--->服务端软件通信模型。
C:Client Software(客户端软件)
- 客户端软件专门安装在客户端计算机上。
- 用于向指定服务端软件发送请求,索要资源文件。
- 可以将服务端软件传过来的【二进制数据】解析成【文字、数字、图片、视频、命令】。
S:Sever Software(服务端软件)
- 服务端软件专门安装到服务端计算机上。
- 用于接收来自特定的客户端软件发送过来的请求。
- 在接收到请求后,自动地在服务端计算机上定位被访问的资源文件。
- 定位到文件后,自动将其内容解析为【二进制文件】,然后通过网络发送回发起请求的客户端软件中
适用场景:C/S通信模型目前普遍用于个人娱乐市场,如微信、京东、Bilibili移动端、大型网游Dota、lol等。在企业办公领域应用较少。
优缺点:
- 优点:
- 安全性较高,数据只能在指定的客户端软件和服务端软件之间传输。
- 有效降低服务端计算机的工作压力,服务端软件可以将命令发送到客户端计算机去执行。
- 缺点:
- 增加用户获得服务的成本。
- 比如你买了方舟生存进化,发现下载游戏需要100来G的存储空间,并且对电脑的配置要求很高。你为了保证良好的游戏体验,买了一台非常贵的高端电脑。如此,成本大大增加了。
- 更新比较繁琐。
- 好比Dota、lol等网游,当服务端软件更新后,客户端软件必须也跟着更新才能运行。
- 增加用户获得服务的成本。
3.2 B/S通信模型
B/S通信模型就是浏览器<--->服务器软件通信模型。
B:Browser(浏览器)
- 浏览器是安装在客户端计算机里的软件。
- 可以向任意服务器发送请求,索要资源文件。
- 可以将服务器发送过来的【二进制文件】解析为【文字、数字、图片、视频、命令】
S:Server Software(服务器软件)
- 服务器软件专门安装到服务端计算机上的。
- 可以接收任意浏览器发送的请求。
- 在接收到请求后,自动地在服务端计算机上定位被访问的资源文件。
- 定位到文件后,自动将其内容解析为【二进制文件】,然后通过网络发送回发起请求的浏览器中。
适用场景:既适用于个人娱乐市场,又广泛适用于企业办公日常。
优缺点:
- 优点:
- 几乎不会增加用户获得服务的成本。
- 用户不可能因为在一个浏览器上打开某个网页的时间太慢而换一台新电脑。
- 几乎不需要更新浏览器。
- 在服务端软件里的执行命令是不需要在浏览器中执行的,并且浏览器也执行不了这些命令。
- 所以,只需要更新服务端软件即可。
- 几乎不会增加用户获得服务的成本。
- 缺点:
- 几乎无法有效对服务端计算机中的资源文件进行保护。
- 只要有浏览器发送请求给服务端软件,服务端软件就会从服务端计算机里找到目标文件发送回浏览器,不管是否合法。
- 服务端计算机工作压力异常巨大。
- 在B/S通信模型里,所有的操作都要在服务端里去完成,当有大量的浏览器发送请求给一个服务端计算机时,服务端计算机的压力就会很大。
- 比如说学校的服务器。每当选课时,会有大量学生通过浏览器访问选课系统。学校的服务器在短时间内处理不了这么多请求,就会崩溃。所以解决高并发问题很重要。
- 【B/S通信下高并发解决方案】:有钱即可解决。一个服务器承受不住,那就用多个服务器来同时承受。(服务器价格昂贵)
- 几乎无法有效对服务端计算机中的资源文件进行保护。
4.共享资源文件
4.1什么是共享资源文件
可以通过网络进行传输的文件,都被称为共享资源文件。
在计算机中,所有文件内容都可以转化为二进制,通过网络传输,所以说所有文件都是共享资源文件。
4.2Http服务器下对共享资源文件的分类
- 静态资源文件
- 动态资源文件
4.3静态资源文件
1)存放内容的文件:如果文件内容固定不变,可以被称为静态资源文件。
- 比如说文档、图片、视频等
2)存放命令的文件:如果这些命令只能在浏览器中编译和执行,这种文件也可以被称为静态资源文件。
- 比如说html文件、css文件和js文件。
4.4动态资源文件
如果文件存放的是命令,并且命令不能在浏览器中编译和执行,只能在服务端计算机编译执行,这样的文件可以被称为动态资源文件。
- 比如说(.class)文件
4.5调用静态资源文件和调用动态资源文件的区别
当静态资源文件被调用时,Http服务器直接通过一个输出流将静态资源文件中的内容或者命令以二进制的形式发送给发出请求的浏览器。
当动态资源文件被调用时,Http服务器需要创建当前class文件的实例对象,然后通过该实例对象调用对应的方法处理用户请求,然后将运行结果以二进制的形式发送给请求的浏览器。
class User {
public boolean equals(String a,String b) {
return a == b;
}
}
User user = new User();
boolean result = user.equals("张三","李四");
5.第一版互联网通信流程图
结合以上内容画出第一版互联网通信流程图:
6.开发人员在互联网通信流程中的职责
1.控制浏览器发送请求行为
- 控制浏览器发送的请求地址,是发送到哪个服务器上的。
- 控制浏览器发送请求的方式
- 控制浏览器发送请求时所携带的参数
2.开发动态资源文件来解决用户请求【.class】
3.控制浏览器接收数据行为
- 控制浏览器使用对应的编译器将服务器发送过来的二进制文件解析成:【文本、图片、视频和命令】。
- 控制浏览器将解析出来的内容和命令进行执行与展示。
- 控制浏览器与用户之间的交互【JS--->JQuery】。