基础知识-计算机网络-应用层

  • 1 应用层协议原理
    • 1.1 网络应用程序体系结构
    • 1.2 进程通信
    • 1.3 应用层协议
    • 1.4应用程序所需要的服务(运输服务)
    • 1.5 因特网运输协议提供的服务
  • 2 Web和Http
    • 2.1 HTTP概况
    • 2.2 HTTP连接
    • 2.3 HTTP报文格式
      • 2.3.1 请求报文
      • 2.3.2 响应报文
    • 2.4用户与服务器的交互:Cookie
    • 2.5 Web缓存
    • 2.6 条件GET方法
  • 3 文件传输协议FTP
  • 4 电子邮件
    • 4.1 英特网电子邮件系统总体结构:
    • 4.2 简单邮件传送协议SMTP
    • 4.3 邮件报文结构
    • 4.4 邮件访问协议
      • 4.4.1 POP3
  • 5 DNS
  • 6 P2P文件共享
  • 7 TCP套接字编程
  • 8 UDP套接字编程

1 应用层协议原理

1.1 网络应用程序体系结构

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

    服务器:提供服务,IP地址永久,可扩展为数据中心

    客户机:请求服务,动态IP地址,彼此间不能直接通信

  2. 纯P2P体系结构

    无打开的服务器,任意端系统可以直接通信,对等方间歇的连接,IP不固定

    文件共享,可拓展性高但是管理复杂

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

    例如:即时讯息应用

    服务器记录动态的用户地址

1.2 进程通信

不同主机中进程间的通信:通过网络交换报文进行

  • 客户机和服务器进程

    客户机进程:发起通信的进程

    服务器进程:等待进程联系的进程

    P2P结构也可以看成客户机和服务器

  • 套接字(socket)

    同一台主机内应用层与运输层之间的接口(API)

  • 进程选址

    识别网络上的目的主机,识别目的主机上的目标进程

    进程识别信息:IP地址+端口号

    常用的应用程序被指派固定的端口号

    创建一个新的网络应用程序时,必须分配一个新的端口号。不重复。

  • 用户代理

    是用户与网路应用程序间的接口。(如浏览器,邮件阅读器)

1.3 应用层协议

定义了运行在不同端系统上的应用程序进程间的传递报文的格式和方式

具体包含

  • 交换报文的类型:如请求报文和响应报文
  • 各种报文类型的语法:报文中各个字段及描述
  • 字段的语义:字段包含的信息的含义
  • 进程何时、如何发送报文及对报文进行响应的规则

公共领域协议:标准文档RFC定义,如HTTP

专用层协议:如Skype使用的协议

应用层协议是网络应用的一部分

1.4应用程序所需要的服务(运输服务)

根据应用的实际情况,对不同的运输需求有差距

  1. 可靠的数据传输:有的应用需要,有的应用可以容忍数据丢失
  2. 带宽(数据传输速率):有带宽敏感应用和弹性应用
  3. 定时(数据传输的时间限制):交互式实时应用,非实时应用
  4. 安全性

1.5 因特网运输协议提供的服务

两个运输层协议:

  • TCP服务:

    面向连接,可靠的传输服务,有拥塞控制(对整个网络有利)

    不确保最小传输速率,不保证时延保证

  • UDP服务:

    无连接,轻量级(不提供不必要的服务),

    无拥塞控制机制,不可靠数据传输,不提供时延保证

    适于实时应用

2 Web和Http

2.1 HTTP概况

是一个应用层协议,Web的核心,超文本传输协议

HTTP由两个程序实现:客户程序和服务程序运行在不同的端系统中,通过交换HTTP报文进行会话。

Web常用术语:

  • 对象:是一个文件,通过URL地址来寻址
  • HTML文件:也是一个对象
  • URL:主机名+路径
  • 浏览器
  • Web服务器:用于存储Web对象

HTTP用的是TCP

工作过程:创建TCP连接→交换报文→关闭连接

HTTP是无状态协议:服务器不保存关于用户的任何信息

2.2 HTTP连接

  • 非持续HTTP连接

    每个TCP连接上只传送一个Web对象,只传送一个请求/响应对

  • 持续的HTTP连接

    一个TCP连接可以传送多个Web对象

工作过程:《p66》

可以并行或者串行连接

往返时延RTT:一个短分组从客户端到服务器到客户端的时间

非持续连接的缺点:服务器负担重,传输时间长(包含两个RTT)

持续连接两种方式:

非流水线:接收到响应后再发下一个请求

流水线:客户机一个接一个连续请求,服务器一个接一个连续发送响应对象

2.3 HTTP报文格式

2.3.1 请求报文

GET /search?hl=zh-CN&source=hp&q=domety&aq=f&oq= HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, application/x-silverlight, application/x-shockwave-flash, /
Referer: http://www.google.cn/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)
Host: www.google.cn
Connection: Keep-Alive
Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g;
NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y-
FxlRugatx63JLv7CWMD6UB_O_r

2.3.2 响应报文

HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Connection: Keep-Alive
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122<html>
<head>
<title>Wrox Homepage</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>

2.4用户与服务器的交互:Cookie

Http服务器是无状态的,不保存客户信息

Cookie:

  • 允许Web站点跟踪识别用户。
  • 可以把内容和用户身份关联。
  • 允许站点对用户进行跟踪。

Cookie组件:

  • Http响应报文带cookie首部行
  • Http请求报文带cookie首部行
  • 用户端保留一个cookie文件,由浏览器管理
  • Web站点有后端数据库管理

缺陷:不利于用户隐私保护

2.5 Web缓存

起始服务器:对象最初存放并且始终保持器拷贝的服务器。

Web缓存器/代理服务器:

  • 能够代表起始服务器来满足HTTP请求的网络实体。
  • 保存最近请求过的对象的副本
  • 可以在客户机工作,也可以在中间系统工作

优点:明显降低用户请求时延,成本明显

2.6 条件GET方法

允许缓存器证实它的对象是最新的

通过缓存器对起始服务器发送GET请求报文来实现

3 文件传输协议FTP

本地主机上的客户,向远程主机上传或者下载文件。

用户通过FTP用户代理与FTP服务器交互

FTP和HTTP比较:

  • 都是文件传输协议,运行在TCP连接
  • FTP用两个并行的TCP连接:控制连接,数据连接。客户机与服务器都有控制进程和数据传输进程。
  • 控制信息,FTP带外传输,HTTP带内传输
  • FTP是有状态连接,HTTP是无状态连接

控制连接:

客户机与服务器在21号端口建立

始终保持连接

数据连接:

服务器收到文件传输命令后在20号端口发起一个到客户机的连接。

传送一个文件后就关闭。

4 电子邮件

4.1 英特网电子邮件系统总体结构:

用户代理和邮件服务器组成,邮件服务器中包含输出报文队列和用户邮箱

邮件发送过程:

邮件先保存到发送方报文队列,再通过SMTP发送到接收方对应的邮件服务器

4.2 简单邮件传送协议SMTP

用的是TCP,在端口25号。

SMTP不使用任何中间服务器。

SMTP和HTTP比较:

  • 都用于从一台主机向另一台主机传送文件
  • SMTP是持续连接,HTTP不一定
  • HTTP是拉协议,SMTP是推协议。
  • SMTP使用7位ASCII码,HTTP数据没有该限制。
  • HTTP把每个对象封装在各自得HTTP报文,SMTP把所有的对象封装在同一个报文。

4.3 邮件报文结构

4.4 邮件访问协议

用户代理用SMTP发报文到发送方邮件服务器,发送方邮件服务器再用SMTP发到接收方邮件服务器。(SMTP是推协议)

4.4.1 POP3

工作步骤:

5 DNS

主机名:便于记忆,路由器处理困难。

IP地址:由四个字节组成,有着严格的层次结构,难记忆但是路由器处理简单。

域名系统DSN提供进行主机名和IP地址的转换

  • 一个分层的DNS服务器实现的分布式数据库
  • 允许主机查询分布式数据库的应用层协议

说明:

  • DNS运行在UDP上,一般使用53号端口(以便于降低时延)
  • DNS通常直接由其他的应用层协议使用,用户只是间接使用
  • 主机可有多个别名,也即DNS所做的主机名到IP地址的映射可以是多对一映射。
  • 主机名也可以是对应一个IP地址组成的集合,一般在大型站点离多见。

分布式,层次数据库(有利于抗故障,以及高拓展性)

  • 根DNS服务器:

    全球几百个,由权威的机构负责运营。

    提供顶级DNS服务器的IP地址。

  • 顶级DNS服务器:

    如com DNS服务器,org DNS服务器,以及国家DNS服务器等等。

    提供权威DNS服务器的IP地址。

  • 权威DNS服务器

    由一些组织机构运营

    提供具体主机的IP地址。

本地DNS服务器:位于本地局域网中,对于架构非常重要。

请求主机查询本地DNS服务器,本地DNS服务器依次查询根DNS,顶级DNS,权威DNS服务器。

6 P2P文件共享

位于网络边缘的端系统互相之间可以直接获取对象,最流行的P2P文件分发协议:BitTorrent。

过程:

  1. 运行一个P2P文件共享应用程序,收搜索一个文件。
  2. 选择一个对等方发送文件请求
  3. 两个用户直接建立TCP连接
  4. 传输文件

特点:

  • 直接在对等方传输
  • 可扩展性特别强
  • 使用客户机/服务器模式

7 TCP套接字编程

运行在不同机器的进程彼此通过套接字传递报文来进行通信,TCP连接一边与客户端的套接字相联系,一边与服务器的套接字相联系。

客户端代码:

from socket import *
serverName = 'serverName'
serverPort = 12000# 创建了客户套接字,第一个参数是选择的底层网络,第二个参数表示套接字类型
clientSocket = socket(AF_INET, SOCK_STREAM)# 与服务器实现TCP连接,这条代码执行的时候,即执行了三次握手
clientSocket.connect((serverName,serverPort))# 获取用户输入的句子,直到回车结束
sentence = raw_input('Input lowercase sentence:')# 发送句子,这里无需显式的创建分组
clientSocket.send(sentence.encode())# 字符到达服务器后,被存放在字符串中
modifiedSentence = clientSocket.recv(1024)# 打印
print('From Server: ', modifiedSentence.decode())# 关闭了套接字,就相当于关闭了连接
clientSocket.close()

服务端代码

from socket import *
serverPort = 12000# 创建一个套接字
serverSocket = socket(AF_INET,SOCK_STREAM)# 将端口号和套接字关联起来
serverSocket.bind(('', serverPort))# 让服务器聆听来自客户的TCP请求,定义了最大连接数
serverSocket,listen(1)
print('The server is ready to receive')
while True:# 用户敲门后,创建新的套接字专门供其使用connectionSocket, addr = serverSocket.accept()sentence = connectionSocket.recv(1024).decode()capitalizeSentence = sentence.upper()connectionSocket.send(capitalizeSentence.encode())connectionSocket.close()

8 UDP套接字编程

服务器实现

from socket import *# 创建udp套接字
sockfd = socket(AF_INET,SOCK_DGRAM)# 绑定地址
server_addr = ('0.0.0.0',8888)
sockfd.bind(server_addr)# 收发消息
while True:data,addr = sockfd.recvfrom(1024)print("From %s Msg:%s"%(addr,data.decode()))sockfd.sendto(b'Thanks',addr)# 关闭套接字
sockfd.close()

客户端实现

from socket import *# 服务端地址
ADDR = ('127.0.0.1',8888)# 创建udp套接字
sockfd = socket(AF_INET,SOCK_DGRAM)# 循环发送消息
while True:data = input("Msg>>")if not data:break# 向服务器发送sockfd.sendto(data.encode(),ADDR)msg,addr = sockfd.recvfrom(1024)print("From Server:",msg.decode())
sockfd.close()

基础知识-计算机网络-应用层相关推荐

  1. 电子商务计算机网络的分类可分为,电子商务员基础知识:计算机网络的分类与拓扑结构...

    电子商务员基础知识:计算机网络的分类与拓扑结构 分类:电子商务师 | 更新时间:2016-07-07| 来源:转载 1.按分布距离分类 计算机网络按分布距离可分为局域网(LAN).城域网(MAN)和广 ...

  2. 计算机网络专业的基础知识,计算机网络专业基础知识.doc

    计算机网络专业基础知识 一.填空题 计算机网络按可以分为 和 . 和 . 对导线组成, 对进行. TCP 服务,UDP可以提供 服务. 层,路由器工作在 层. ,其中 经常处于守候状态. , . 协议 ...

  3. 计算机管理员基础知识,计算机网络管理员(基础知识)

    <计算机网络管理员(基础知识)>由中国就业培训技术指导中心按照标准.教材.题库相衔接的原则组织编写,是国家职业技能鉴定推荐辅导用书.书中内容根据<国家职业标准?计算机网络管理员> ...

  4. 计算机通信网络的基础知识,计算机网络基础知识之通信方式

    $2.1.3 通信方式 在计算机内部各部件之间.计算机与各种外部设备之间及计算机与计算机之间都是以通信的方式传递交换数据信息的.通信有两种基本方式,即串行方式和并行方式.通常情况下,并行方式用于近距离 ...

  5. 计算机网络技基础知识,计算机网络技基础知识点2014.doc

    计算机网络技基础知识点2014 精编资料 <计算机网络技术基础>知识点1. 用一台计算机作为主机,通过通信线路与多台终端...10. 计算机网络自主性是指连网的计算机之间不存在制约控制关系 ...

  6. 计算机网络基础知识之应用层

    客户/服务器(C/S)模型 P2P模型 DNS系统 DNS其实就是主机HOST域名对IP地址的映射,方便用户的使用 https://www.baidu.com ➡️通过DNS系统➡️ http://2 ...

  7. 很无聊但是又很重要的 计算机网络基础知识 ---“计算机网络发展历程“

    目录 概述 计算机网络发展史 互联网的诞生 TCP/IP 的诞生 进一步发展 发展阶段总结 我国互联网发展 计算机网络发展历程 批处理 分时系统 计算机通信 计算机网络的诞生 计算机网络的高速发展 网 ...

  8. 就这一篇,计算机网络基础知识总结

    如果说计算机把我们从工业时代带到了信息时代,那么计算机网络就可以说把我们带到了网络时代.随着使用计算机人数的不断增加,计算机也经历了一系列的发展,从大型通用计算机-超级计算机-小型机-个人电脑 -工作 ...

  9. 计算机网络——网络基础知识

    摘要 随着Internet技术的迅速发展,越来越多的计算机连入了Internet.很多公司也将自己公司的局域网接入了Internet.如何快速地访问Internet站点,提高网络的安全性,成为了当今的 ...

最新文章

  1. 2018年爱奇艺校招笔试
  2. 【计算理论】计算复杂性 ( NP 类不同表述 | 团问题 | P 对 NP 问题 )
  3. 山西五台警方通报“男子强拽女学生”:嫌疑人被刑拘
  4. 一个免费的页面素材网站
  5. android+usb转串口+唯一id,Android平台3G模块驱动移植-USB转串口
  6. power bi 创建空表_使用Power BI创建足球热图
  7. 【小白】线性表的链式存储结构的实现(C语言版)
  8. facebook登陆接入
  9. 教小师妹学多线程,看完我写的例子,脸红成那样!
  10. 小程序跳转到其他小程序
  11. 聚合支付平台需要哪方面的技术?主要有哪些功能结构?
  12. 全国公众服务电话号码
  13. AI大军已经兵临城下,我们离失业还有多远?
  14. Android【WebView】
  15. SV--随机化笔记总结
  16. Linux 设置多指触控手势,以 Manjaro 为例
  17. 国家-首都 {中-英文对照}
  18. 天才小毒妃 第973章 韩芸汐,救我
  19. Debug-PC之开山老祖[转]
  20. ThinkPHP 中实现 Rewrite 模式

热门文章

  1. nginx作为web服务以及nginx.conf详解
  2. potplayer 多个进程_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?...
  3. 云数据库逐渐成熟,阿里云提出“去O”小目标
  4. MODIS冰雪数据批量下载
  5. Android网络请求操作httpurlconnection和httpclient基本使用
  6. 2008年2月28日 转换为 二○○八年二月二八日
  7. JS中Generator函数的详解
  8. 同济、阿里获CVPR最佳学生论文,李飞飞获黄煦涛奖,近6000人线下参会
  9. 用python处理excel的基本语法_Python对Excel操作详解
  10. 通过tushare获取金融数据的方法