计算机网络高频知识点

一、协议层次和服务模型

1. 协议分层

为了给网络协议的设计提供一个结构,网络设计者以分层的方式组织协议。每个协议属于层次模型之一,每一层都是向他的上一层提供服务,即所谓的服务模型。

物理层、链路层、网络层、运输层和应用层(从下到上)

1.1 应用层
  • 应用层是网络应用程序和网络协议存放的分层,包含许多协议。如HTTP、SMTP(电子邮件传输协议)、FTP(端系统文件上传协议)、DNS(域名解析协议)

  • 位于应用层的数据称为报文

1.2 传输层
  • 在应用程序之间传送应用程序报文。
  • TCP、UDP协议
    • TCP协议向他的应用程序提供面向连接的服务,能够控制并确认报文是否到达。并且提供了拥塞机制来控制网络传输,因此当网络拥塞时,会抑制其传输效率。
    • UDP协议向他的应用程序提供无连接的服务,不具备可靠性的特征,没有流量控制和拥塞控制。
  • 传输层的分组为报文段
1.3 网络层
  • 负责将数据报的网络分层从一台主机移动到另一台主机。
  • IP协议:所有具有网络层的因特网都必须运行IP协议,IP协议是一种网际协议。
  • 网络层还包括一些网际协议和路由选择协议
1.4 链路层
  • 应用程序通信的协议、给应用程序提供传输的协议、还有用于约定发送位置的IP协议。为了将分组从一个节点(主机或路由器)运输到另一个节点,网络层必须依靠链路层提供服务。链路层的例子包括以太网、WIFI和电缆介入的DOCSIS协议。因为数据从源目的地传送通常需要经过几条链路,一个数据可能被沿途不同的链路协议处理

  • 链路层的分组称为

  • 最重要的一个协议:ARP协议(Address Resolution Protocol)地址解析协议。将已知IP地址转换为MAC地址

1.5 物理层
  • 物理层的作用就是将帧中的一个个比特从一个节点运输到另一个节点,物理层的协议仍然使用链路层协议,这些协议与实际的物理传输媒介有关。比如,以太网有很多物理层协议:双绞铜线、同轴电缆、光纤等

OSI的七层模型(在应用层和运输层之间多了表示层和会话层

  • 表示层主要包括数据压缩和数据解密以及数据描述

二、在浏览器网址中输入地址,产生的操作

在浏览器输入地址,点击回车发生了以下事情,分为HTTP和HTTPS。

1.HTTP访问

发生的事情总结如下:

1. 浏览器进行格式验证和地址解析
  • 首先进行格式校验,符合浏览器地址的要求

  • 浏览器对地址进行解析,获取协议、主机、端口、路径等信息

2. 将解析出的域名进行DNS解析,获得IP地址

DNS解析分为以下几个步骤:

  1. 首先查看浏览器DNS缓存中是否有域名对应的IP
  2. 如果没有,则查看操作系统DNS缓存中是否有对应的IP(Windows为hosts文件)
  3. 依旧没有就对==本地区的DNS服务器==发起请求
  4. 如果还是没有,就直接到Root Server域名服务器请求解析

注意:

  • DNS在进行区域传输的时候是要用TCP协议,其他时候使用UDP协议
  • 全球共13台逻辑根服务器
3. 进行IP寻址和ARP,找到目标服务器地址

在第二步获取到了IP,可以直接通过IP寻址找到对应的服务器,然后通过ARP协议找服务器的MAC地址

IP地址(ipv4,32位)。ip地址是IP协议提供的一种统一的地址格式,他为互联网上的每个网络和每一台主机分配一个逻辑地址,以屏蔽物理地址的差异。分为A、B、C、D、E五大类

  • A类地址:1个字节的网络地址+3个字节的主机地址。地址范围:1.0.0.0~127.255.255.255
  • B类地址:2个字节的网络地址+2字节的主机地址。地址范围:128.0.0.0~191.255.255.255
  • C类地址:3个字节的网络地址+1字节的主机地址。地址范围:192.0.0.0~223.255.255.255
  • D类地址:多播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的最高位必须是 1110 , 范围:224.0.0.0~239.255.255.255
  • E类地址:以 11110 开头,E类地址都保留用于将来和实验室使用。
3.2 IP寻址的方式

判断两个IP地址是不是在同一个网段,需要将他们的IP地址分别与子网掩码做与运算,得到的结果就是网络号。

  • 同一网段

  • 不同网段

4. 进行TCP三次握手,建立TCP连接
5. 浏览器发送数据,等待服务器响应
6. 服务器处理请求,并对请求作出响应
7. 浏览器收到服务器响应,得到HTML代码
8. 渲染页面

TCP和HTTP的区别和联系

TCP和HTTP比较

  • TCP是底层通讯协议,定义的是数据传输和连接方式的规范
  • HTTP是应用层协议,定义的是传输数据内容的规范
  • HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP
  • HTTP支持的是www服务
  • 而TCP/IP协议是Internet国际互联网络的基础。TCP/IP是网络中使用的基本的通信协议。
  • TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,而不单单是TCP和IP。

1. TCP连接

手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上

  • 建立一个TCP连接需要经过三次握手

2. HTTP连接

HTTP协议即超文本传输协议,是web联网的基础,也是手机联网常用的协议之一。

Http协议是建立在TCP协议之上的一种应用

HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。

2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。

由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客 户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。

3.Socket原理

3.1套接字(socket)概念

套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口

应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据为了区别不同的应用程序进程和连接,许多计算机操作系统应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务

3.2 建立socket连接

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。

套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

  • 服务器监听**:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。**
  • 客户端请求**:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。**
  • 连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户 端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
3.4 SOCKET连接与TCP连接

创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

3.5 Socket连接与HTTP连接

由于通常情况下Socket连接就是TCP连接,因此**Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。**但在实际网络应用 中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导 致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。

而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以 保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

总结

  • TCP是传输层协议,而HTTP是应用层协议

  • HTTP是要基于TCP连接基础上的,简单的说,TCP就是单纯建立连接(三次握手),不涉及任何我们需要请求的实际数据,简单的传输HTTP是用来收发数据,即实际应用上来的。

  • 从实际上的数据应用来说HTTP

    • 在前面客户端和应用服务器建立TCP连接之后,就需要用http协议来传送数据了,HTTP协议简单来说,还是请求,确认,连接
    • 浏览器发送一个请求给服务器,服务器收到这个请求之后,返回数据给客户端浏览器,然后通过客户端的中间件或者说是浏览器讲这些数据渲染成页面展示出来。具体步骤如下:
      1. 客户端发送一个请求给服务器,包括请求头和请求内容
      2. 请求头(request header)有:
        1. 请求的方法是POST/GET,
        2. 请求的URL
        3. HTTP的协议版本
        4. 请求的数据,和编码方式
        5. 是否有cookie和sessions ,
        6. 是否缓存等
      3. 服务器收到HTTP请求之后,根据请求头,返回HTTP响应,也包括返回头和返回内容
        1. Response Header:包括了1.cookies或者sessions 2.状态吗 3.内容大小等
        2. response body:即响应的内容,包括,JS什么的
      4. 客户端收到服务端发送的数据之后,进行渲染展示

HTTP状态码

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接受并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

常见常态码总结

  • 200:请求成功,一般用于POST和GET

  • 204:无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档(没有资源可以返回)

  • 206:部分内容。服务器成功处理了部分GET请求。客户端进行了范围请求,并且服务器成功执行了这部分的GET请求,响应报文包含有content-page指定范围的实体内容。

  • 301:永久移动、请求的资源被永久地移动到新的URL中,返回信息会包括新的URL,浏览器会自动定向到新URL。以后任何新的请求都由新的URL代替。

  • 302:临时移动,与301类似,但资源只是临时移动,客户端继续使用原有URL

  • 303:查看其它地址,与301类似,使用POST和GET方式请求查看

  • 304:未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源

  • 307:临时重定向。与302类似。使用GET请求重定向

  • 400:客户端请求的语法错误,服务器无法理解

  • 401:请求要求用户的身份认证

  • 402:保留,将来使用

  • 403:服务器理解请求客户端的请求,但是拒绝执行此请求

  • 404:服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面

  • 500:服务器内部错误,无法完成请求

  • 501:服务器不支持请求的功能,无法完成请求

  • 503:由于超载或系统维护,服务器暂时无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值