<计算机网络>计算机网络和应用层
1、端系统通过通信链路和分组交换机连接在一起,构成网络。网络和网络之间通过路由器相连,组成了因特网。
2、ISP(Internet Service Provider)因特网服务提供商。端系统通过ISP接入互联网,每个ISP是由一个或者多个分组交换机和多段通信链路组成的网络。为了允许因特网用户之间互相通信,允许用户访问世界范围的因特网内容,这些低层ISP通过国家的、国际的高层ISP互联起来。高层ISP是由通过高速光纤链路互联的高速路由器组成。每个ISP都是独立管理的,运行IP协议,遵从一定的命名和地址习惯.
时延:
- 处理时延:检查分组首部,决定将分组导向何处所需的时延
- 排队时延:分组在链路上等待传输时,经受的排队时间
- 传输时延:将分组的所有比特推向链路所需的时间
- 传播时延:分组在链路中传播所需的时间
模型:
五层模型:
- 应用层:任务是通过应用进程间的交互来完成特定网络应用
- 运输层:负责向两台主机中进程之间的通信提供数据传输服务
- 网络层:负责为分组交换网上的不同主机提供通信服务、选择合适的路由
- 链路层:将网络层的数据报封装成帧,使用链路层协议在相邻节点间的链路上传输帧
- 物理层:帧中一个个比特从一个节点移动到下一个节点
七层模型:
- 会话层:提供了数据交换的定界和同步功能,包括建立检查点和恢复方案的方法
- 表示层:使通信的应用程序能够解释交换数据的含义,提供数据压缩、数据加密等服务
应用层
两种体系结构:
- 客户-服务器模型(C/S)
- P2P
运输服务要求分类:(1)可靠的数据传输(2)吞吐量(3)定时(4)安全
TCP
- 面向连接的服务
- 可靠数据传输
除此之外,TCP还有拥塞控制机制,拥塞控制不一定能带来好处。
UDP
- 无连接的服务
- 不可靠数据传输服务(不保证到达,也不保证有序到达)
应用层协议
HTTP协议:使用TCP作为运输层协议
HTTP是超文本传输协议,它是一个无状态协议:服务器向客户机发送请求的文件的时候,并不保存任何有关客户机的状态信息。假设某个客户之前请求过一个对象,服务器并不会因为刚刚该用户请求国就不再作出反应。
连接类型:持续连接和非持续连接
- 持续连接:所有请求/相应对使用同一个TCP连接发送
- 非持续连接:每次请求/响应是经一个单独的TCP连接发送
如果使用持续连接,那么客户机收到请求信息后,服务器不会发送一个TCP连接关闭请求。这个连接服务于所有web对象的传输,如果经过一个时间间隔仍然未被使用,那么服务器关闭这个连接
如果使用非持续链接,将TCP握手第三步与一个http请求报文结合起来发送,服务器接收请求后响应一个对象。因此,传输一个对象消耗2个RTT。由于TCP连接会分配缓冲区和变量,大量使用非持久连接会给服务器造成压力。
- http1.0 非持续连接
- http1.1使用持续连接。
请求报文格式
http请求第一行叫做请求行,后继的行叫做首部行。
相关参数:
- 请求行:请求方法,URL字段,HTTP协议版本
- Host:请求的目标主机
- connection:告知浏览器不必使用长连接
- User-agent,用户代理,即浏览器的版本。
请求报文通用格式:
使用GET方法时,实体体为空,使用POST方法时,实体体才会存有数据。
方法字段:
- GET:大多数HTTP请求使用GET方法
- POST:用户提交表单时
- PUT:类似于GET,区别是服务器返回的响应报文中不包括请求对象
- HEAD:向服务器上传对象
- DELETE:删除服务器上的对象
POST和GET区别:
- get通过url传递,post放在实体体中
- get请求在url中传递的参数是有长度限制的,而post没有
- get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。
- get只能进行url编码,而post可以进行多种编码
- get请求参数会被完整保留在浏览历史记录中,而post的参数不会被保留
- get和post本质上是tcp连接,并无差别。但由于http的规定和浏览器/服务器的限制,导致应用上出现不同
- get产生一个tcp数据包,而post产生两个。对于get请求,浏览器会把data和head一起发送过去,而post则先发送header,服务器响应100,然后再发data,服务器响应200.
响应报文信息:
状态码:
- 200 ok,请求成功
- 301 Moved Permanently,请求的信息已经被永久转移了
- 400 bad Request,一个通用差错代码,请求不能被服务器理解
- 404,not found, 请求的文档不在服务器
- 505 版本不支持
cookie:用于识别用户,一方面限制用户的访问,另一方面时服务器想将内容与用户联系起来。
cookie包含四个组成部分:
- 在http响应报文中有一个Set-cookie首部行。
- 在http请求报文中有一个cookie首部行。
- 在用户端系统中保留有一个cookie文件,由用户的浏览器管理。
- 在web站点有一个后端数据库。
web缓存:也叫代理服务器。用于缓存web对象。如果web缓存器没有请求的对象,会与初始服务器建立一条tcp连接,web缓存器进一步发送http请求,获取对象,然后将该对象缓存在本地,首先本地缓存,然后生成一个http响应报文,发送给客户机。
条件get:web缓存器使用条件get向web服务器确认某个对象是否已经被修改。
DNS(域名服务系统):运行在UDP之上,53端口
- 主机名到IP地址的转换。
- 主机别名
- 邮件服务器别名
- 负载分配
DNS服务器:
集中设计(单一DNS服务器)具备以下问题:
- 单点故障
- 通信容量:单个DNS服务器承受所有查询负载
- 远距离的集中式数据库:单个DNS服务器不可能临近所有的查询客户机。
所以DNS采用上述的分布式设计方案,
- 根服务器:13个根DNS服务器
- 顶级域DNS服务器
- 权威DNS服务器。
除此之外,DNS还有本地DNS服务器。
DNS查询步骤:
DNS缓存:在查询链中,当一个DNS服务器接收到一个DN应答时,DNS服务器能将回答中的信息缓存在本地存储。以便加速后续可能的查询。由于主机IP和主机名之间的映射不是永久的,DNS服务器会在一段时间后丢弃缓存。
<计算机网络>计算机网络和应用层的更多相关文章
- 计算机网络相关:应用层协议(二):HTTP
前言 复习下计算机网络的知识并记录 正文 定义:HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议. 一.HTT ...
- 计算机网络相关:应用层协议(一):DNS
DNS 1.概念 DNS是: 1) 一个有分层的DNS服务器实现的分布式数据库 2)一个使得主机能够查询分布式数据库的应用协议. 它运行在UDP之上,默认使用53号端口. 主要功能 是将主 ...
- 计算机网络之应用层概述(C/S模型与p2p模型)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105582318 学习课程:<2019王道考研计算机网络> 学习目的 ...
- 哈工大计算机网络Week0-概述
目录 L01什么是计算机网络 计算机网络 Internet L02什么是网络协议? 定义 内容 三要素 L03计算机网络结构 网络边缘 接入网络 数字用户线路DSL 电缆网络 无线接入网络 网络核心( ...
- 计算机网络之应用层_part -1
应用层协议原理 一.网络应用程序体系结构 网络应用程序体系结构是由程序研发者设计的,规定了如何在各种端系统中组织该应用程序,主要流行的有两种: 1.客户--服务器体系结构: 有一个总是打开的主机(称为 ...
- 计算机网络Web应用层与运输层(HTTP/TCP)
应用层协议原理 Web和HTTP DNS:英特网的目录服务 运输层 面向连接的运输:TCP及拥塞原理 一.应用层协议原理 DNS域名解析: (用例:www.baidu.com)域名解析是网络请求的第一 ...
- 计算机网络自顶向下方法第2章-应用层(application-layer).1
2.1 应用层协议原理 2.1.1网络应用程序体系结构 1)在客户-服务器体系结构 (client-server architecture)中,有一个总是打开的主机称为服务器,它服务于来自许多其他称为 ...
- 《计算机网络 自顶向下方法》 第2章 应用层 Part1
常见的应用层协议有哪些? HTTP(HyperText Transfer Protocol):超文本传输协议 FTP(File Transfer Protocol):文件传输协议 SMTP(Sim ...
- 计算机网络-应用层(5)P2P应用
P2P系统的索引:信息到节点位置(IP地址+端口号)的映射 在文件共享(如电驴中):利用索引动态跟踪节点所共享的文件的位置.节点需要告诉索引它拥有哪些文件.节点搜索索引从而获知能够得到哪些文件 在即时 ...
随机推荐
- Linux Shell脚本编程while语句案例
1,每隔3秒,打印一次系统负载 #!/bin/bash while true do uptime done 2,把监控结果保存到文件,在后台执行,然后用tail -f监控文件变化 ghostwu@de ...
- H5调拨打电话界面
<a href=”tel:15771791266 ”>拨打电话</a> 切记不要用js调用 直接用a标签 苹果安卓塞班都能调起来
- Python 函数的作用域
python中的作用域有4种: 名称 介绍 L local,局部作用域,函数中定义的变量: E enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的: B ...
- 【读书笔记】iOS-基带攻击
一,iOS设备中的蜂窝网络通信栈运行在专门的芯片上,这个芯片就是数字基带处理器. 参考资料:<黑客攻防技术宝典-iOS实战篇>
- 【读书笔记】iOS-软件测试与iOS测试
一,软件测试的类型. 1.软件测试按照测试类型,可以划分为:单元测试,集成测试和系统测试. 2.单元测试是指对软件系统中最小可测试单元进行的检查和验证. 3.集成测试,在iOS软件开发中,集成测试主要 ...
- python之if循环
if 条件: if语句块else: 语句块 money = int(input("请输入你兜里的钱:")) if money > 500: print("吃肉&qu ...
- vue.js 键盘enter事件的使用
在监听键盘事件时,我们经常需要检查常见的键值.Vue 允许为 v-on 在监听键盘事件时添加按键修饰符: <!-- 只有在 `keyCode` 是 13 时调用 `vm.submit()` -- ...
- 我的Java之旅 第六课 JAVA WEB 请求与响应
一.有关URL编码 1.在URL的规范中定义了一些保留字符,如:: / ? & = @ % 等,在URI中有它的作用.如果要在URI中包含这些字符,必须转码,即%字符后跟十六进 ...
- Retrofit2 动态(静态)添加请求头Header
Retrofit提供了两个两种定义HTTP请求头字段的方法即静态和动态.静态头不能改变为不同的请求,头的键和值是固定的且不可改变的,随着程序的打开便已固定. 动态添加 @GET("/&quo ...
- Android View体系(一)视图坐标系
前言 Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系.View的滑动.View的事件分发等文章来逐步介绍Android V ...