Internet 传输层提供的服务
1. TCP 服务:
- 可靠的传输服务
- 流量控制:发送方不会淹 没接受方
- 拥塞控制:当网络出现拥 塞时,能抑制发送方
- 不能提供的服务:时间保 证、最小吞吐保证和安全
- 面向连接:要求在客户端 进程和服务器进程之间建 立连接
2. UDP服务
- 不可靠数据传输
- 不提供的服务:可靠, 流量控制、拥塞控制、 时间、带宽保证、建立 连接
UDP服务存在的必要性
- 能够区分不同的进程,而IP服务不能
- 在IP提供的主机到主机端到端功能的基础上,区分了主机的 应用进程
- 无需建立连接,省去了建立连接时间,适合事务性的 应用
- 不做可靠性的工作,例如检错重发,适合那些对实时 性要求比较高而对正确性要求不高的应用
- 因为为了实现可靠性(准确性、保序等),必须付出时间代 价(检错重发)
- 没有拥塞控制和流量控制,应用能够按照设定的速度 发送数据
- 而在TCP上面的应用,应用发送数据的速度和主机向网络发送 的实际速度是不一致的,因为有流量控制和拥塞控制
Internet应用及其应用层协议和传输协议
安全TCP
TCP & UDP都是不安全的,他们在传输过程中都不提供任何的安全性, 都是明文传输的, 明文通过互联网传输 ,甚至密码
如何增加安全性 ?
1.SSL : 在TCP上面实现,提供加密的TCP连接
基本上是在应用层, 但是也可以在传输层。
1.SSL socket API
应用通过API将明文交 给socket,SSL将其加 密在互联网上传输
Web and HTTP
相关术语:
Web页:由一些对象组成
对象可以是HTML文件、JPEG图像、Java小程序、声 音剪辑文件等
Web页含有一个基本的HTML文件,该基本HTML文 件又包含若干对象的引用(链接)
通过URL对每个对象进行引用
访问协议,用户名,口令字,端口等;
URL格式:
互联网中的所有指向都是通过这种对象的形式呈现的网状。
我们想要找到某一个内容从这个网状结构中 ,就需要通过搜索引擎来建立索引,然后通过我们输入的关键字作为索引, 他就会将匹配的内容给你。
HTTP概述
Http: 超文本传输协议
包括:
- Web的应用层协议
- 客户/服务器模式
客户: 请求、接收和显示 Web对象的浏览器
服务器: 对请求进行响应, 发送对象的Web服务器
协议有:
- HTTP 1.0: 在RFC 1945中描述
- HTTP 1.1: 在RFC 2068中描述
HTTP是跑在TCP之上的(步骤)★★★★★
- 首先, 客户发起一个与服务器的 TCP连接 (建立套接字) , 端口号为 80
- 服务器接受客户的TCP连 接
- 然后, 在浏览器(HTTP客户端) 与 Web服务器(HTTP服 务器 server)交换HTTP 报文 (应用层协议报文 )
- 最后, TCP连接关闭
解释:
服务器端建立的时候会有一个Socket 用来守护80 端口。(假装叫Socket1)
客户端通过请求发送到服务器之后 ,服务器端会产生Socket (叫Socket2) ,这个Socket代表的就是这个客户端和 当前服务器端建立的会话关系。
之后来的请求同样会建立会话关系(Socket i)
刚开始建立的Socket1并不会有动作, 他会等待其他浏览器的请求, 来建立并发的会话关系
上述的Socket处理请求就类似于: 他(Socket1)是大堂经理,来客人后,把客人分给手下具体营业员管理(Socket i)
HTTP是无状态的。服务器并不维护关 于客户的任何信息
维护状态的协议很复杂!
- 必须维护历史信息(状态)
- 如果服务器/客户端死机,它 们的状态信息可能不一致, 二者的信息必须是一致
- 无状态的服务器能够支持更 多的客户端
HTTP连接
非持久HTTP(三次握手初讲)
- 最多只有一个对象在 TCP连接上发送
- 下载多个对象需要多 个TCP连接
- HTTP/1.0使用非持 久连接
在一个Web浏览器和一个Web服务器想要建立连接的时候(HTTP 1.0 版本)
- 首先借助SocketAPI 告诉下面的TCP要根对方建立连接了(发送请求)
- 然后这个请求还会回来(建立确认), 然后进行交互才能完成。
- 借者就是发送HTTP请求, 然后响应等等
响应时间模型
往返时间RTT(round-trip time):一个小的分组从客 户端到服务器,在回到客户 端的时间(传输时间忽略)
响应时间:
- 一个RTT用来发起TCP连接
- 一个 RTT用来HTTP请求并 等待HTTP响应
- 文件传输时间
共:2RTT+传输时间
传输是把分组打出去的时间,传播是分组在介质中运行的时间
持久HTTP
- 多个对象可以在一个 (在客户端和服务器 之间的)TCP连接上 传输
- 在相同客户端和服务器之间的后 续请求和响应报文通过相同的连 接进行传送
- 客户端在遇到一个引用对象的时 候,就可以尽快发送该对象的请 求
- HTTP/1.1 默认使用 持久连接
非持久的缺点:
- 每个对象要2个 RTT
- 操作系统必须为每个TCP连接分 配资源
- 但浏览器通常打开并行TCP连接 ,以获取引用对象
(一) 流水线方式的持久HTTP
- 客户端只能在收到前一个响应后 才能发出新的请求
- 每个引用对象花费一个RTT
- HTTP/1.1 默认使用 持久连接
类似于并行的方式吧,
(二) 非流水线方式的持久HTTP
- HTTP/1.1的默认模式
- 客户端遇到一个引用对象就立即 产生一个请求
- 所有引用(小)对象只花费一个 RTT是可能的