计算机网络--应用层Web简单介绍

计算机网络养成:第六天

Java(打卡第62天)


学习内容

计算机网络----应用层


首先表明一下,我使用的是《计算机网络第7版–自顶向下方法》Kurouse , 我主要是先说明基础的知识,尽量表述的通俗易懂,并且内容很基础,才疏学浅,如果没有帮助到你,我很抱歉,一起学习~一起加油 ~

网络已经有很长时间没有更新了,原因也提到过,但是网络基本的概念,前面已经讲到了的,像基本的protocol,service,还有检查连接的cmd命令transert,前面已经从整体上对网络进行分析,介绍了接入网,核心,边缘,介绍了protcol模型,service,peer,接下来就是自顶向下分析计算机网络,所以最先分析应用层,之前已经大概介绍了应用层的大概,接下来详细分析

Web and HTTP

之前大概介绍了应用层的message交互是要使用传输层的socket接口,socket就是一个整数包含可IP和port等信息,表示当前主机与目标主机的会话关系,而且这个socket只是本地的代号;在OSI模型中,在传输层和应用层之间还有会话层和表示层,但是由于其包容性不好,普遍采用的还是五层的网络结构。传输层提供的service主要又UDP和TCP两种,主要区别就是是否面向连接。关于安全TCP,即在TCP上加载SSL,在网络安全章节详细介绍

那么昨天也提过web,web就是一种应用,而Http就是支持web的协议,那么先来简单看一下web

  • web页 :由一些对象组成,对象可以是HTML文件,JPEG图像,Java小程序,声音剪辑文件等,HTML文件本身只是一个空的网页,所以上面的图像之类的还要再次又HTML提供链接访问
  • Web页含有一个基本的HTML文件,该基本HTML文件又包含若干对象的引用
  • 通过URL对每一个对象进行引用,通过协议,用户名,口令,端口等

所以HTML网页中包含了很多URL,客户端访问时,HTML将网页再客户端上面画出来,通过URL链接再将网页上的各种文件画出来,对象指对象,所以非常复杂

URL (Uniform Resource Locator)统一资源定位符

URL是统一资源定位符,对可以从互联网得到的资源的位置和访问方法的一种简洁的表示,是互联网的标准资源地址,每一个文件都有一个唯一的URL。

URL的格式

【协议名】prot : //【用户】user : 【口令】psw&【主机名】www.someSchool.edu /【路径名】someDept/pic.gif【文件名】:port【端口】

比如给一个例子,打开哔哩哔哩网页

https://www.bilibili.com/video/BV1JV411t7ow?p=14

https是协议,之后是主机名,路径和端口号【这里是匿名访问,没有用户口令】

在之前的小欢聊天室中就已经使用过URL,当时是用URL来加载图片,加载图片还有另外的方式

Image icon = getImage("icon.gif");

Image getImage(String filename) {
		URLClassLoader urLoader = (URLClassLoader)this.getClass().getClassLoader();//类加载
		URL url = null;
		Image image = null;
		url = urLoader.findResource(filename);
		image = Toolkit.getDefaultToolkit().getImage(filename);
		MediaTracker mediatracker = new MediaTracker(this);
		try {
			mediatracker.addImage(image, 0);
			mediatracker.waitForID(0);
		}catch(InterruptedException e) {
			image = null; //线程中断就没有
		}
		if(mediatracker.isErrorID(0)) {
			image = null;
		}
		return image;
	}
//这里就是使用了URL来加载图像文件

可以直接使用BufferedImage 定义之后,使用ImageIO的read方法,传入类的字节码文件getResource方法,就可以获取到导入到包中的图片

这里可以使用java的URL类来看一下URL

try {
			URL url = new URL("https://www.bilibili.com/video/BV1JV411t7ow?p=14");
			System.out.println("URL是" + url.toString());
			System.out.println("协议是" + url.getProtocol());
			System.out.println("DNS主机名是" + url.getAuthority());//authroity,获取服务器的域名系统DNS主机名或者IP地址和端口号
			System.out.println("query查询是" + url.getQuery());//query查询
			System.out.println("用户info是" + url.getUserInfo());  //用户的info,命令,这里为匿名访问,为null
			System.out.println("ref是" + url.getRef());
			System.out.println("文件是" + url.getFile());
			System.out.println("路径是" + url.getPath());
			System.out.println("主机是" + url.getHost());
			System.out.println("端口号是" + url.getPort());
			System.out.println("默认端口号是" + url.getDefaultPort());
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}

URL是https://www.bilibili.com/video/BV1JV411t7ow?p=14
协议是https
DNS主机名是www.bilibili.com
query查询是p=14
用户info是null
ref是null
文件是/video/BV1JV411t7ow?p=14
路径是/video/BV1JV411t7ow
主机是www.bilibili.com
端口号是-1
默认端口号是443

这里就可以清楚看到该网址的各个部分,是没有用户口令的,并且最后的p = 14是查询query

HTTP概况【hype text transpot protocol】超文本传输协议

HTTP :超文本传输协议

  • Web的应用层协议
  • 使用了客户/服务器模式 ----- 客户 : 请求,接收和显示Web对象的浏览器 ; 服务器 ---- 对请求进行响应,发送对象的Web服务器
  • HTTP 1.0 :RFC 1945
  • HTTP 1.1 : RFC 2068

HTTP使用的是TCP service,服务过程:

  • 客户端发起一个与服务器的TCP连接(建立套接字)端口号为80
  • 服务器接收客户的TCP连接

比如原来的服务器端口是80,那么最初由一个等待建立连接的wait socket,s1,当来了一个客户端的连接请求,就会产生一个socket来表示两者的连接关系,java中就是socket.accept方法,有新的socket连接,就会建立新的socket来指代

  • 在浏览器(HTTP客户端)与Web服务器(HTTP服务器server)交换HTTP报文(应用层协议报文)
  • TCP连接关闭

HTTP是无状态的

服务器并不维护关于客户的任何信息

因为维护状态的协议很复杂【必须维护历史信息(状态),如果服务端/客户端死机,它们的状态信息可能不一样,二者的信息是必须一致的】无状态的服务器能过支持更多的客户端

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值