计算机网络核心知识总结

协议层及其服务模型

Q:为什么要分层?
A:因为Internet非常复杂。 对于复杂的系统,分层有以下几点好处:

  1. 使其结构非常清晰,清楚地知道各层之间的关系;
  2. 模块化会使系统的维护、升级更见简化,改变某一层服务的具体实现对系统其他部分透明(不影响)。

But: 分层也有弊端,因为每一层可能都要重复较低层的功能。

参考模型

  • ISO/OSI七层参考模型:
层号 层的名称
7 应用层
6 表示层
5 会话层
4 传输层
3 网络层
2 数据链路层
1 物理层
  • TCP/IP参考模型:
层号 层的名称
5 应用层
4 传输层
3 网络层
2 数据链路层
1 物理层
  • 两种参考模型:ISO/OSI是理论上的标准,TCP/IP是事实上的标准。

网际协议栈

  • 应用层:支持网络应用,报文传送。HTTP,FTP,SMTP,STTP
  • 传输层:主机进程间数据段传送。TCP,UDP
  • 网络层:主机(源目标节点)间分组传送。IP协议,路由协议
  • 数据链路层:相邻网络节点间的数据帧传送。PPP,Ethernet,……
  • 物理层:物理介质上的比特传送

应用层

网络应用程序体系结构

1. 客户机/服务器体系结构

  • 服务器主机总是打开
  • 服务器具有固定的、众所周知的IP地址
  • 客户机具有动态的IP地址
  • 客户机之间不能通信

2. P2P体系结构

  • 没有总是打开的服务器
  • 任意一对主机之间可以直接通信
  • 对等方间歇连接,可以改变IP地址

3. 客户机/服务器和P2P混合体系结构

  • 文件在对等方之间相互交换、文件搜索通过服务器
  • 两个聊天用户之间是P2P、注册和查询通过服务器

HTTP协议

网页由许多对象组成,每一个对象都被一个URL(统一资源定位符)寻址:

URL
HTTP: 超文本传输协议,Web的应用层协议,采用客户机/服务器协议。
HTTP是无状态协议,服务器不维护客户先前的状态信息。也就是说:如果客户机第一次登录并且成功后,再第二次登录,服务器仍然不会知道当前请求的是哪个用户。

HTTP连接

  • 非持久HTTP连接:每个TCP连接只传送一个对象,下载多个对象需要创建多个TCP连接,HTTP/1.0使用非持久HTTP连接。
  • 持久HTTP连接:一个TCP连接可传送多个对象,HTTP/1.1默认使用持久HTTP连接。

HTTP报文格式

HTTP请求报文:

报文格式
sp:空格,cr:回车,lf:换行,URI:统一资源标识符
URI与URL的区别: URL是URI的子集,它们都定义了资源是什么。但有区别:URI可以唯一标识该对象,而URL不仅可以唯一标识该元素,还可以定位到它,所以叫统一资源定位符。举例:身份证号是URI,身份证地址+姓名是URL。
HTTP请求报文示例:
在这里插入图片描述

  • HTTP/1.0方法:
    GET:从服务器获取指定数据
    POST:向服务器传送指定数据
    HEAD:服务器收到请求时返回响应消息只包含HEAD头部,不包含请求对象主体
  • HTTP/1.1方法:
    GET、POST 、HEAD
    PUT:文件在实体主体中被上载到URL指定的路径
    DELETE:删除URL字段指定的文件

GET方法 vs POST方法:

  1. 本质定义。GET是从服务器获取数据,POST是把需要处理的数据提交到服务器上。
  2. 安全性。GET方法将请求的数据加在URL后,用 ? 分隔URL和请求数据,多个参数用 & 连接,地址栏中可见,所以非常不安全;POST方法要传送的数据在请求包的实体中,地址栏中不可见,比GET更安全。
  3. 传输数据大小。由于GET方法中请求的数据在URL后面,而URL长度是有限制的,不能超过2KB,因此GET传输的数据较少并且有限;但POST对数据大小没有限制
  4. 有害性。浏览器后退或者刷新,GET方法不会产生什么动作,也就是不会修改服务器数据,但POST会重新提交数据给服务器。

HTTP响应报文:

响应报文
HTTP响应状态码:
HTTP响应状态码位于HTTP响应报文的第一行,常见的状态码有:

  • 200 OK 请求成功,响应消息返回所请求的对象
  • 301 Moved Permanently 请求对象已永久迁移新的URL 在响应首部用字段Location: 指出,浏览器接受到带Location头的响应时,就会跳转到相应的地址。
  • 302 表示临时重定向。请求对象暂时迁移,新的URL 在响应首部用字段 Location: 指出,浏览器接受到带Location头的响应时,就会跳转到相应的地址。
  • 400 Bad Request 该请求不能被服务器解读
  • 404 Not Found 服务器上不存在所请求的对象
  • 505 HTTP Version Not Supported

HTTP常见首部行:
请求报文:

  • Host:请求的目标域名和端口号
  • User-agent:向服务器发送浏览器的版本、系统、应用程序信息
  • Cookie: 当前域名下的cookie数据
  • Accept-language:向服务器声明客户机接收的语言版本
  • Connection:告诉服务器采用什么连接方式,例如Connection: Close 关闭默认的HTTP持久连接(用于HTTP/1.1)

响应报文:

  • Connection
  • Date:服务器发送资源时的服务器时间
  • Server:HTTP服务器的应用程序信息
  • Location:重定向,让客户端跳转到新的URL进行访问
  • Last-Modified: 服务器发来的当前资源的最后一次修改时间,如果下一次请求时,服务器上当前资源的修改时间比这个大(更晚),就返回新的资源内容。
  • Content-Length:消息实体的传输长度
  • Content-Type:响应体的媒体资源类型(比如html类型,UTF-8编码等等)

HTTP vs HTTPS

HTTP:是超文本传输协议,是以明文方式传输数据的,没有提供任何数据加密,并且不会验证通信方的身份。
HTTPS:是安全套接字层超文本传输协议,是由SSL + HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全。
注意: HTTPS协议并非是应用层的一种新的协议,只是在HTTP通信接口部分用SSL协议代替而已。原本HTTP与TCP之间直接进行通信,但加入SSL后就先是HTTP与SSL进行通信,再是SSL与TCP进行通信。

HTTP与HTTPS的区别:

  1. HTTPS协议需要到CA(电子认证服务)申请证书。
  2. HTTP是超文本传输协议,HTTPS是更安全的SSL加密传输协议。
  3. 使用完全不同的连接方式,端口也不同,HTTP使用80端口,而HTTPS使用443端口。
  4. HTTP连接很简单,是无状态的;HTTPS是由SSL + HTTP构建的可进行加密传输、身份认证的更安全的网络协议。

SSL协议

SSL:位于TCP/IP协议与各种应用层协议之间。

  • SSL协议基本内容
  1. SSL记录协议:建立在可靠传输协议的基础之上(如TCP),为高层协议提供数据封装、压缩、加密等基本功能。
  2. SSL握手协议:建立在SSL记录协议之上,在数据传输之前,双方进行身份验证、协商加密算法、交换加密密钥等。
  • SSL协议原理
    公钥加密法。 客户端向服务端索要公钥,收到后用自己的私钥加密信息,服务端收到密文后用自己的私钥解密。

注意: 1999年把SSL协议标准化改名为TLS(传输层安全协议),但这两者其实是同一种协议,只是不同阶段的称呼而已。

Cookie和Session

  • cookie:因为HTTP请求是无状态的,它不会认识当前的用户是谁。cookie的出现就为了解决这个问题。用户第一次请求服务器时,服务器会返回一些数据(cookie)给浏览器,浏览器保存到本地,等下一次再请求服务器时就会自动带上本地的cookie数据,服务器拿到这个数据就知道该请求用户是谁了。但是cookie只能存少量数据,不同浏览器存储大小不同,但一般不超过4KB
  • session:session和cookie的作用类似,都是为了保存用户相关的信息,但是不同的是:session是保存在服务器上的,cookie保存在本地浏览器。保存在服务器上的session数据不容易被窃取,更加安全,但弊端是占用了服务器的资源。

传输层

网络层

数据链路层

物理层

发布了6 篇原创文章 · 获赞 7 · 访问量 2963

猜你喜欢

转载自blog.csdn.net/yy2017220302028/article/details/104631286
今日推荐