前端-计算机网络篇

一.网络分类

1.按照网络的作用范围进行分类

(1)广域网WAN(Wide Area Network)

广域网的作用范围通常为几十到几千公里,因而有时也称为远程网(long haul network)。广域网是互联网的核心部分,其任务是长距离运送主机所发送的数据。

(2)城域网MAN(Metropolitan Area Network)

城域网的作用范围一般是一个城市,可跨越几个街区甚至整个城市,其作用距离约为5-50km.城域网可以为一个或几个单位所拥有,也可以是一种公共设施,用来将多个局域网进行互连。目前很多城域网采用的是以太网技术。

(3)局域网(Local Area Network)

局域网一般用微型计算机或工作站通过高速通信线路相连,但地理上则局限在较小的范围(如1km左右)

(4)个人区域网PAN(Perisonal Area Network)

个人局域网就是在个人工作的地方把属于个人使用的电子设备用无线技术连接起来的网络,因此也常常称为无线个人局域网WPAN(Wireless PAN),其范围很小,大约在10m左右。

2.按照网络的使用者进行分类

(1)公用网(public network)

这是指电信公司出资建造的大型网络。"公用"就是所有愿意按电信公司的规定交纳费用的人都可以使用这种网络。

(2)专用网络(private network)

这是某个部门为满足单位的特殊业务工作的需要而建造的网络。这种网络不向本单位以外的人提供服务。例如 军队,铁路,银行......

二.体系结构

为了使不同体系结构的计算机网络能互连,国际标准化组织ISO 于1977提出了各种计算机在世界范围内互联成网的标准框架,即著名的开放系统互连基本参考模型OSI/RM(Open Systems Interconnection Reference Model), 简称为OSI。

3.运输层

运输层的任务就是负责向两台主机中的进程之间的通信 提供通用的数据传输服务。应用进程利用该服务传送应用层报文。

运输层主要使用以下两种协议:

传输控制协议TCP(Transmisson Control Protocol)

TCP时面向连接(一对一)的运输层协议 ,提供可靠的数据传输服务全双工通信其数据传输的单位是报文段

用户数据报协议UDP(User Datagram Protocol)

提供无连接的尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报

①TCP

TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前**必须先建立连接,数据传送完成后要释放连接。**无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。

在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。

TCP是全双工模式(互相发送信息) ,所以需要四次挥手关闭连接。


每一条TCP连接有两个端点.比如在电脑分别用谷歌和火狐浏览器登录B站,B站则需要把内容发给两个不同的应用进程,那么除了IP地址以外还需要端口号才能保证内容不会错发给应用进程,在访问B站的时候浏览器会自动给我添加端口号443(HTTPS),然后电脑中会给不同浏览器分配不同的端口号.这样进行连接就会像"管道"一样特定进行传输.那么IP地址加端口号称为套接字socket

TCP首部格式

在TCP首部格式需要知道几个字段

序号(seq)

占四字节.在一个TCP连接中传送的字节流中的每一个字节都按顺序编号.

确认号(ack)

占四字节 是期望对方收到下一个报文段的一个数据字节的序号.

记住:若确认号为N,则表明N-1为止的所有数据都已正确收到.

紧急URG(URGent):

当URG=1时,表示紧急指针有效.发送应用进程告诉t发送方的tcp有紧急数据要传送.于是发送方TCP就把紧急数据插入本报问段数据的最前面,而在紧急数据后面的数据仍是普通数据.

确认ACK(ACKnowledgment)

仅当ACk=1时确认号字段才有效.当为0时,确认号无效.TCP规定,在连接后所有传送的报文段都必须把ACK置为1

推送PSH(PuSH)

当发送方TCP把PSH置为1,并立即创建一个报文段发送出去.接收方TCP收到PSH=1报文段,就尽快交付接受应用进程,而不再等到整个缓存都填满了后再向上交付.

复位RST(ReSeT)

当RST=1时,表示TCP连接中**出现严重差错(**如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接.将RST置为1来拒绝一个非法的报文或者拒绝打开一个连接.RST也称为重建位或重置位.

同步SYN(SYNchronization)

当SYN=1而ACK=0时,表明这是一个连接请求报文段.若对方同意建立连接,则在响应的报文段中使用SYN=1和ACK=1.因此SYN置为1就表示这是一个连接请求或者连接接受报文.

终止FIN(FINish)

当FIN=1时,表明此报文段的发送方数据已发送完毕,并要求释放运输连接.

TCP三次握手

所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个报文。

过程如下:

  • 第一次握手:客户端给服务端发一个 SYN(同步,连接请求) 报文,并指明客户端的初始化序列号 ISN(c),此时客户端处于 SYN_SENT 状态
  • 第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且开启ACK(确认),为了确认客户端的 SYN,将客户端的 ISN+1作为ACK的值,此时服务器处于 SYN_RCVD 的状态
  • 第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,值为服务器的ISN+1。此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接
  • 第一次握手:客户端发送网络包,服务端收到了 这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
  • 第二次握手:服务端发包,客户端收到了 这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常
  • 第三次握手:客户端发包,服务端收到了。 这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常
TCP四次挥手

客户端和服务端都可以主动发送关闭连接的请求

过程如下:

  • 第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态,停止发送数据,等待服务端的确认
  • 第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态
  • 第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态
  • 第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态,服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态

#四次挥手原因

服务端在收到客户端断开连接Fin报文后,并不会立即关闭连接,而是先发送一个ACK包先告诉客户端收到关闭连接的请求,只有当服务器的所有报文发送完毕之后,才发送FIN报文断开连接,因此需要四次挥手

三.HTTP和HTTPS

HTTP(HyperText Transfer Protocol)超文本传输协议

不同点:

①连接方面:

HTTP 和 HTTPS 使用连接方式不同,默认端口也不一样,HTTP是80,HTTPS是443

②加密方面:

HTTP协议运行在TCP之上,所有传输的内容都是明文。HTTPS使用SSL/TLS协议对HTTP报文进行加密,使得敏感数据在网络传输过程中不容易被窃听和篡改。这种加密过程结合了对称加密和非对称加密,确保数据的保密性和完整性。

1.HTTP1.0 HTTP.1.1 HTTP2.0区别

①HTTP1.0

②HTTP1.1

②HTTP2.0

四.Get和Post请求区别

get请求通常用于从服务器获取资源,参数暴露在URL中,存在安全隐患,并且传输长度受URL限制,一般为2k。

情况例举:在地址栏输入url访问;点击a链接;link标签引入css;;img标签引入图片;script标签引入js;video与audio引入多媒体;form标签的method为get;ajax的get请求。

post请求通常用于向服务器提交数据或者创建新的资源。数据放在请求体中,而不是暴露在URL中,理论上来说没有传输长度限制。

情况举例:;form标签的method为post;ajax的post请求。

五.HTTP响应状态码

状态码第一位数字决定了不同的响应状态,有如下:

  • 1 表示消息
  • 2 表示成功
  • 3 表示重定向
  • 4 表示请求错误
  • 5 表示服务器错误

#1xx

代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束

常见的有:

  • 100(客户端继续发送请求,这是临时响应):这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应
  • 101:服务器根据客户端的请求切换协议,主要用于websocket或http2升级

#2xx

代表请求已成功被服务器接收、理解、并接受

常见的有:

  • 200(成功):请求已成功,请求所希望的响应头或数据体将随此响应返回

  • 201(已创建):请求成功并且服务器创建了新的资源

  • 202(已创建):服务器已经接收请求,但尚未处理

  • 203(非授权信息):服务器已成功处理请求,但返回的信息可能来自另一来源

  • 204(无内容):服务器成功处理请求,但没有返回任何内容

  • 205(重置内容):服务器成功处理请求,但没有返回任何内容

  • 206(部分内容):服务器成功处理了部分请求

#3xx

表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向

常见的有:

  • 300(多种选择):针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择

  • 301(永久移动):请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置

  • 302(临时移动): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

  • 303(查看其他位置):请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码

  • 305 (使用代理): 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理

  • 307 (临时重定向): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

#4xx

代表了客户端看起来可能发生了错误,妨碍了服务器的处理

常见的有:

  • 400(错误请求): 服务器不理解请求的语法
  • 401(未授权): 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
  • 403(禁止): 服务器拒绝请求
  • 404(未找到): 服务器找不到请求的网页
  • 405(方法禁用): 禁用请求中指定的方法
  • 406(不接受): 无法使用请求的内容特性响应请求的网页
  • 407(需要代理授权): 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理
  • 408(请求超时): 服务器等候请求时发生超时

#5xx

表示服务器无法完成明显有效的请求。这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生

常见的有:

  • 500(服务器内部错误):服务器遇到错误,无法完成请求
  • 501(尚未实施):服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码
  • 502(错误网关): 服务器作为网关或代理,从上游服务器收到无效响应
  • 503(服务不可用): 服务器目前无法使用(由于超载或停机维护)
  • 504(网关超时): 服务器作为网关或代理,但是没有及时从上游服务器收到请求
  • 505(HTTP 版本不受支持): 服务器不支持请求中所用的 HTTP 协议版本
相关推荐
sensen_kiss4 分钟前
CAN201 Introduction to Networking(计算机网络)Pt.5 网络安全
学习·计算机网络·web安全·智能路由器
Kika写代码2 小时前
【计算机网络】课程 实验三 跨交换机实现 VLAN 间路由
网络·计算机网络·php
yz7177 小时前
计算机网络•自顶向下方法:网络安全、RSA算法
学习·计算机网络·web安全
喵~来学编程啦11 小时前
【计算机网络】第四章·网络层
网络·计算机网络·学习笔记
计算鸡SayHelloWorld13 小时前
计算机网络--根据IP地址和路由表计算下一跳
服务器·tcp/ip·计算机网络
喵~来学编程啦13 小时前
【计算机网络】第三章·数据链路层与局域网/广域网
计算机网络
天堂的恶魔94614 小时前
计算机网络 —— 网络编程(TCP)
网络·tcp/ip·计算机网络
IT 青年15 小时前
计算机网络 (25)IPV6
计算机网络
计算鸡SayHelloWorld15 小时前
计算机网络--UDP和TCP课后习题
tcp/ip·计算机网络·udp
Tony小周17 小时前
计算机网络原理(谢希仁第八版)第4章课后习题答案
网络·计算机网络·智能路由器