前言
一、应用层协议原理
1.网络应用的体系结构
对等体(P2P)体系结构
C/S和P2P体系结构的混合体
2.进程通信
- 在同一个主机内,使用进程间通信机制通信(操作系统定义)
- 不同主机,通过交换报文(Message)来通信
- 客户端进程:发起通信的进程
- 服务器进程:等待连接的进程
- 注意:P2P架构的应用也有客户端进程和服务器进程之分
对进程进行编址:
- UDP socket:
- 对于使用无连接服务(UDP)的应用而言,套接字是2元组的一个具有本地意义的标示
应用层协议:
公开协议:
专用(私有)协议:
-
吞吐
Internet传输层提供的服务:
-
TCP服务:
-
UDP服务:
UDP存在的必要性:
- 能够区分不同的进程,而IP服务不能
- 无需建立连接,省去了建立连接时间,适合事务性的应用
- 不做可靠性的工作,例如检错重发,适合那些对实时性要求比较高而对正确性要求不高的应用
- 因为为了实现可靠性(准确性、保序等),必须付出时间代价(检错重发)
- 没有拥塞控制和流量控制,应用能够按照设定的速度发送数据
安全TCP:
二、Web与HTTP
介绍一些术语
1.HTTP概况
- HTTP:超文本传输协议
- HTTP 1.O: RFC 1945
- HTTP 1.1: RFC 2068
2.HTTP连接
(1)非持久HTTP连接
响应时间模型:
往返时间RTT (round-triptime):一个小的分组从客户端到服务器,在回到客户端的时间(传输时间忽略)
响应时间:
(2)持久HTTP
3.HTTP请求报文
通信格式:
HTTP响应报文:
HTTP响应状态码:
位于服务器–>客户端的响应报文中的首行一些状态码的例子:
- 200 OK
- 301 Moved Permanently
- 400 Bad Request
- 404 Not Found
- 请求的文档在该服务上没有找到
- 505 HTTP version Not supported
应用进程要自己区分报文的边界,TCP向上层提供的服务是不区分边界的,你发两段15K内容,但是实际上TCP收到的是一个30K内容。
4.用户-服务器状态:cookies
大多数主要门户使用cookies。cookie也弥补了HTTP无状态的问题。
四个组成部分:
在第一次向服务器请求时是没有Cookie值的,第一次请求后,服务器会生成一个cookie响应给客户端。
Cookies能带来什么:
如何维持状态:
5.Web缓存(代理服务器)
目标:不访问原始服务器,就满足客户的请求
为什么要使用Web缓存?
缓存示例:
在对比缓存生效时,状态码为304,并且报文大小和请求时间大大减少。
原因是,服务端在进行标识比较后,只返回header部分,通过状态码通知客户端使用缓存,不再需要将响应报文体部分返回给客户端。
对于对比缓存来说,缓存标识的传递是我们着重需要理解的,它在请求header和响应header间进行传递,一共分为两种标识传递。
- 再次请求服务器时,通过此字段通知服务器上次请求时,服务器返回的资源最后修改时间。
- 服务器收到请求后发现有头If-Modified-Since 则与被请求资源的最后修改时间进行比对。
- 若资源的最后修改时间大于If-Modified-Since,说明资源又被改动过,则响应整片资源内容,返回状态码200;
- 若资源的最后修改时间小于或等于If-Modified-Since,说明资源无新修改,则响应HTTP 304,告知浏览器继续使用所保存的cache。
-
Expires的值为服务端返回的到期时间,即下一次请求时,请求时间小于服务端返回的到期时间,直接使用缓存数据。
不过现在一般不是用这个参数: -
到期时间是由服务端生成的,但是客户端时间可能跟服务端时间有误差,这就会导致缓存命中的误差。
所以HTTP 1.1 的版本,使用Cache-Control替代。
图中Cache-Control仅指定了max–age,所以默认为private,缓存时间为31536000秒(365天)也就是说,在365天内再次请求这条数据,都会直接获取缓存数据库中的数据,直接使用。
注意:
如果Expires和Cache-Control同时存在,Cache-Control会覆盖Expires。建议两个都写,Cache-Control是http1.1的头字段,Expires是http1.0的头字段,都写兼容会好点。
三、FTP:文件传输协议
1.FTP:控制连接与数据连接分开
- FTP客户端与FTP服务器通过端口21 联系,并使用TCP为传输协议
- 客户端通过控制连接获得身份确认
- 客户端通过控制连接发送命令浏览远程目录
- 收到一个文件传输命令时,服务器打开一个到客户端的数据连接(端口号:20)
- 一个文件传输完成后,服务器关闭连接
- 服务器打开第二个TCP数据连接用来传输另一个文件
- 控制连接:带外(“out of band’)传送
- FTP服务器维护用户的状态信息:当前路径、用户帐户与控制连接对应有状态
2.FTP命令、响应
命令样例:
- 在控制连接上以ASCII文本方式传送
- USER usernamePAss password
- LIST:请服务器返回远程主机当前目录的文件列表
- RETR filename:从远程主机的当前目录检索文件(gets)
- STOR filename:向远程主机的当前目录存放文件(puts)
返回码样例:
- 状态码和状态信息(同HTTP)
- 331 Username OK,password required
- 125 data connectionalready open;transfer starting
- 425 can’t open dataconnection
- 452 Error writingfile
总结
以上就是应用层的一些讲解,分为两篇,上篇下篇,下篇后续会发。
原文地址:https://blog.csdn.net/weixin_62951900/article/details/134703692
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_32552.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!