應用層大綱
傳輸層向應用層提供的服務,形式是Socket API(原語)
一些網絡應用的例子
互聯網層次中,應用層協議最多
流媒體應用:直播
網絡核心最高的層次就是網絡層
應用進程通信方式
C/S:
客戶端:可能是動態IP(DHCP)
服務器:固定IP(中心,地位不平等)
可擴展性差
對等體:
混合體:
應用:Napster(音樂共享軟件)
注冊,登錄:C/S
用戶越多,資源越多,下載速度越快
QQ:
目錄查詢,注冊,登記:C/S
會話:p2p方式
進程通信
在同一個主機上,應用進程通信只需要操作系統本身應用進程通信的方式【管道,消息隊列,共享緩沖區】,不需要符合網絡的標準
在不同的主機,兩個應用進程互相發送報文,需要符合網絡的規范
客戶端(主動)
服務器(被動)
分布式進程通信需要解決的問題
進程標識:標識自己,讓別的能夠找到(唯一)
通過Socket ApI來訪問傳輸層向應用層提供的服務
地點:SAP,服務訪問點
形式:Socket API
問題一:對進程進行編址
終端地址:IP
UDP,TCP:傳輸層協議
端口
知名端口:
web應用(HTTP:80),FTP(21),Talent(23)
任何一對應用進程之間的通信都可以由兩個端節點(end port)來標識
問題二:需要穿過層間的信息
信息:
發的什么:SDU報文
誰發的:IP+TCP/UDP端口
發給誰:對方的IP+TCP/UDP端口
把信息拿到后封裝【段頭+數據部分】
TCP Socket
每次都傳輸這么多東西:減少傳輸的信息量–》Socket,便于管理
一個整數
一旦與對方建立連接后,就會返回一個整數,主機之間會話的關系:Socket【本地意義上的標識,對方主機不知道】
四元組:TCP
[本機IP 本機端口號 對方IP 對方端口號]
Socket只有應用層,傳輸層知道【應用層與傳輸層的約定】,網絡層不知道
在TCP中操作Socket值,就是操作會話關系;與文件系統,操作句柄就是在操作文件一樣
Socket值:操作系統分配的整數【每個會話不一樣】
當前狀態在不斷地更新
源IP,目標IP:往下交給IP的協議,讓IP來封裝IP的數據報
SDU+源IP+目標IP封裝
數據本身+【本地IP+本地端口+對方的IP +對方的TCP端口號】-》TCP Socket
會話要交兩種
同一個進程對應一個端口
UDP Socket
無握手
每個報文傳輸都是獨立的
UDP Socket:本地IP 本地UDP端口【二元組】
本地意義上的二元組的映射關系
數據本身+【本地IP+本地端口】-》UDP Socket
會話必須要對方的IP 和 對方的UDP端口號,所以會話要交三種
問題三:使用傳輸層提供的服務實現應用
應用層的協議:分布式的應用進程在通信時應該遵守的規范
應用協議不是應用的全部,僅僅是應用的一部分【應用交互過程中與網絡相關的部分】
應用實體【遵守協議,與網絡相關的部分】
Skype:通過互聯網打電話
傳輸層向應用層提供服務的衡量指標:
數據丟失率【可靠性】
延遲大:如打電話時,自己在說,對方也在說【延遲,現在才穿過來】
吞吐量:取決于瓶頸鏈路
數據丟失率:文件傳輸
實時音視頻:吞吐量
傳輸層提供的服務TCP UDP
TCP:
實體:實現網絡協議的軟件或硬件模塊【運行當中的】
流量控制:協調發送與接受速率
擁塞控制:能夠感知路徑的擁塞程度,實時調整
不能保證:時間【定時】 吞吐量 安全性
IP只能提供主機到主機的區分,不能進程到進程的區分
UDP:通過端口號進行進程到進程的區分
TCP的可靠性消耗了時間和空間的代價
有些防火墻會過濾UDP
TCP和UDP都沒有安全性
SSL安全套接字層【跑在TCP層上】:提供安全性的服務,在應用層{說傳輸層也可以}
HTTPS:在TCP的SSL上【安全】