Java教程

计网

本文主要是介绍计网,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、计算机网络各层协议及作用

计算机网络体系:OSI七层模型,TCP/IP四层模型和五层协议

img

(a)表示 OSI 的七层协议体系结构,其概念清楚,理论也较完整,但它既复杂又不实用,没有实际应用。

b)是商业上获得成功的 TCP/IP 四层体系结构:应用层、运输层、网际层和网络接口层。但最下面的网络接口层并没有具体内容。

(c)是综合 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构 。

  • 应用层:为应用程序提供交互服务。应用层协议有很多:域名系统DNS、支持万维网的Http协议、支持邮件服务的SMTP协议等等
  • 表示层:主要负责数据格式的转换。如加密解密、转换翻译、压缩解压等
  • 会话层:负责在网络中两个节点之间建立连接、维持和断开通信,如:服务器验证用户登入
  • 运输层:也叫传输层,向主机进程提供通用的数据传输服务。该层主要有两个协议,
    • TCP协议:提供面向连接的、可靠的数据传输服务,面向字节流。文件传输
    • UDP协议:提供面向无连接、不可靠的数据传输服务,面向报文。视频会议
  • 网络层:选择适合的路由和交换节点,确保数据及时传送。主要是IP协议
  • 数据链路层:将网络层传下来的IP数据包组装层帧,并且在相邻节点的链路上传送帧
  • 物理层:实现相邻节点比特流的传输,尽可能的屏蔽传输介质和通信手段的差异

2、TCP三次握手

TCP头部结构:

在这里插入图片描述

序号:在建立连接时由计算机随机生成,每发送一次请求,序列号+1。用来解决网络中包乱序的问题

确认号:表示下一次期望收到的报文序列号,之前的数据包都收到了。解决网络丢包问题

控制位:

  • SYN:该位为1时,表示希望建立连接,并且初始化序列号
  • ACK:该位为一时,确认号是有效的,TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置1。
  • FIN: 该位为1时,希望正常断开连接,通信双方互相交换FIN,表示可以断开
  • RST:该位为1时,表示出现异常,强制连接断开

三次握手机制:

  • 第一次握手:客户端请求建立连接,向服务器发送一个同步报文(SYN=1),并且初始化序列号,随后客户端进入syn_sent状态,等待服务器确认。
  • 第二次握手:服务器接收到连接请求报文后,如果同意建立连接,则向客户端发送同步确认报文(SYN=1,ACK=1),并且初始化序列号,并把发送的序列号+1放入确认应答号中,随后服务器进入SYN_RECV状态
  • 第三次握手:客户端收到服务器的确认后,向服务器发送一个确认报文(ACK=1),确认号序列号都加1,客户端和服务端进入established状态(已经成功建立连接)。

只有三次握手才能让双方都确认自己和对方发送和接收的能力都正常

3、TCP四次挥手

  • 第一次挥手:客户端向服务端发送断开连接报文(ACK=1,FIN=1),主动关闭连接,同时等待服务端的确认。
  • 第二次挥手:服务器接收到断开连接的报文后,立即发送确认报文(ack=1),这时tcp处于半关闭状态,但服务端到客户端的连接还未断开。
  • 第三次挥手:服务器向客户端发送断开连接报文(FIN=1,ACk=1),主动关闭连接,同时等待客户端的确认
  • 第四次挥手:客户端接收到服务端的断开连接报文,立即发送确认报文(ack=1),客户端进入time-wait状态。

4、TCP的滑动窗口

在进行数据传输时,如果传输的数据比较大,就需要拆分为多个数据包进行发送。TCP协议需要对数据进行确认后,才能发送下一个数据包,这样等待确认应答包就会浪费时间。

为了避免这种情况,tcp引入了窗口的概念。窗口可以不需要等待确认应答包而继续发送数据包

5、Http常用的状态码

  • 200:服务器成功处理了请求
  • 301:请求的网页已经永久移动到新位置。服务器返回此响应时,会自动跳转到新位置
  • 302:请求的网页还在,只是临时跳转
  • 400:客户端请求有语法错误,服务器不能理解
  • 403:服务器接到请求,但是拒绝访问
  • 404:找不到请求的网页
  • 500:服务器内部错误

1××:接收的请求正在处理

2××:成功状态码,请求成功处理

3××:重定向状态码

4××:客户端错误状态码,服务器无法处理请求

5××:服务器错误状态码,服务器处理请求出错

6、GET和POST

GET:从服务器请求数据

  • get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段对应,在URL中可以看到

POST:向服务器提交要被处理的数据

  • ost是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程

本质区别:GET 用于获取信息,是无副作用的,是幂等的,且可缓存, 而POST 用于修改服务器上的数据,有副作用,非幂等,不可缓存。

HTTP幂等方法,是指无论调用这个URL多少次,都不会有不同的结果的HTTP方法。

幂等性

  • HTTP幂等方法,是指无论调用这个URL多少次,都不会有不同的结果的HTTP方法。
  • 值得注意,幂等性指的是作用于结果而非资源本身。可能某个方法可能每次会得到不同的返回内容,但并不影响资源,这样的也满足幂等性,例如get服务器当前时间

HTTP GET方法

  • 用于获取资源,不管调用多少次接口,结果都不会改变,所以是幂等的。

HTTP POST方法

  • POST是一个非幂等方法,它会对资源本身产生影响,每次调用都会有新的资源产生,因此不满足幂等性

7、Http长连接和短连接

在HTTP1.0中,默认是短连接,也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断。

从HTTP1.1起,默认是长连接,用于保持连接,使用HTTP的长连接,会在响应头加入:Connection:keep-alive

8、Http请求报文和响应报文

请求报文格式:

  • 请求行:请求方法+URL协议+版本
  • 请求头部、空行、请求体

响应报文:

  • 状态行:版本+状态码+原因短语
  • 响应头、空行、响应主体

9、HTTP1.1和HTTP2.0的区别

Http2.0相比Http1.1支持的特性:

  • 新的二进制格式:http1.1的解析是基于文本(文本的表现形式多样);http2.0使用二进制解析,不用考虑其它,实现方便并且健壮
  • 多路复用:即连接共享,每一个request都是用作连接共享的。
  • 头部压缩:http1.1的头部带有大量信息。http2.0避免了重复的header的传输,减少了头部的大小
  • 服务端推送:服务器可以向客户端推送资源,而无需客户端明确

10、HTTP和HTTPS的区别

http https
端口 80 443
安全性 无加密,安全性较差 有加密,安全性高
资源消耗 较少 由于加密,资源消耗较多
是否需要证书 不需要 需要
协议 在TCP协议上 在SSL协议上,SSL在TCP协议上

11、在浏览器输入www.baidu.com后执行的过程

1、域名解析(www.baidu.com变为ip地址)

  • 浏览器搜索自己的DNS缓存;如果没有,搜索操作系统的DNS缓存;如果没有,搜索操作系统的hosts文件,都维护了一张域名与ip的对应表;如果都没有,则从本地DNS服务器查(递归查询),查询自己的DNS缓存,如果没有,则进行迭代查询。将本地DNS服务器和ip返回给操作系统,同时缓存ip

2、发起tcp的三次握手,建立tcp连接。浏览器会以一个随机端口向服务器的web 80端口发起tcp连接

3、建立tcp连接后发起http请求

4、服务器响应http请求,客户端得到html代码。

5、浏览器解析代码,并且请求html中的资源

6、浏览器对页面进行渲染,并且呈现给用户

12、Cookie和Session

Cookie:是服务器发送到用户浏览器并且保存在本地的数据,它会在浏览器下一次访问同一服务器时被携带发送到服务器上。

Session:代表服务器和客户端的一次会话。

用户在第一次请求服务器时,服务器根据用户提交的相关信息,创建对应的Session,请求返回时将此Session的唯一标识信息SessionID返回给浏览器,浏览器接收到SessionID后,将其保存到Cookie中,同时记录SessionID属于哪个域名。

当用户第二次访问服务器时,请求会自动判断此域名下是否有Cooike信息,如果存在自动将Cookie信息发送给服务器,服务器会自动获取SessionID,再根据SessionID查找对应的session信息,如果找到说明用户已经登入

SessionID是连接Session和Cookie的一道桥梁

区别:

  • 作用范围不同:Cookie保存在客户端,Session保存在服务端
  • 存储大小不同:单个Cookie保存的数据不能超过4k;Session可存储数据高于Cookie
这篇关于计网的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!