首頁  >  文章  >  後端開發  >  php面試題二之用過的傳輸協議

php面試題二之用過的傳輸協議

不言
不言原創
2018-04-18 09:31:524207瀏覽

這篇文章介紹的內容是關於php面試題二之用到過的傳輸協議,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

1.HTTP (hyper text transport protocol):超文本傳輸協定。它是Internet上應用最廣泛的通訊協定之一,上網用戶用到的WWW程式都需要遵守這個協定標準。如果使用者要對某個資源伺服器的檔案進行訪問,包括對該伺服器上指定檔案的瀏覽、下載、運行等,都可以透過HTTP存取Internet上的WWW的資源。
 2. FILE:本機檔案傳輸協定。是從使用者自己電腦上取得檔案的一種方法,使用者透過它可以將儲存在自己硬碟上的檔案顯示在導航系統的螢幕上。
  3. FTP(file transfer protocol):檔案傳輸協定。該協定是從互聯網獲取文件的方法之一,它是為用戶與文件伺服器之間進行相互傳輸文件服務的。透過此協定使用者可以很方便地查看遠端伺服器上的文件內容,同時也可以把所需的內容拷貝到自己所使用的電腦上。另外一方面,如果檔案伺服器授權允許使用者可以用該伺服器上的檔案進行管理的話,使用者就可以把自己本地電腦上的內容上傳到檔案伺服器上,讓其他使用者共享,而且還能自由地對上面的文件進行編輯操作,例如對檔案進行刪除、移動、複製、更名等。

傳輸層提供了兩種到達目標網路的方式

傳輸控制協定(TCP):提供了完善的錯誤控制和流量控制,能夠確保資料正常傳輸,是一個面向連接的協議。
用戶資料報協定(UDP):只提供了基本的錯誤偵測,是一個無連線的協定。
特點:
1)UDP:
把資料打包
資料大小有限制(64k)
不建立連線
速度快,但可靠性低
2)TCP :
建立連接通道
資料大小無限制
速度慢,但是可靠性高
由於傳輸層涉及的東西比較多,例如端口,Socket等,都是我們做移動開發需要了解的,之後的文章中我們再具體做介紹,這裡就不講解了。

應用層做為 TCP/IP 協定的最高層級,對我們行動開發來說,是接觸最多的。

運行在TCP協定上的協定:
HTTP(Hypertext Transfer Protocol,超文本傳輸協定),主要用於普通瀏覽。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本傳輸協定),HTTP協定的安全版本。
FTP(File Transfer Protocol,檔案傳輸協定),由名知義,用於檔案傳輸。
POP3(Post Office Protocol, version 3,郵局協定),收郵件用。
SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協定),用來傳送電子郵件。
TELNET(Teletype over the Network,網路電傳),透過一個終端(terminal)登陸到網路。
SSH(Secure Shell,用於替代安全性差的TELNET),用於加密安全登陸用。
運行在UDP協定上的協定:
BOOTP(Boot Protocol,啟動協定),套用於無磁碟裝置。
NTP(Network Time Protocol,網路時間協定),用於網路同步。
DHCP(Dynamic Host Configuration Protocol,動態主機設定協定),動態設定IP位址。
其他:
DNS(Domain Name Service,網域名稱服務),用於完成地址查找,郵件轉送等工作(運行在TCP和UDP協定上)。
ECHO(Echo Protocol,迴繞協定),用於查錯及測量應答時間(運行在TCP和UDP協定上)。
SNMP(Simple Network Management Protocol,簡單網路管理協定),用於網路資訊的收集和網路管理。
ARP(Address Resolution Protocol,位址解析協定),用於動態解析乙太網路硬體的位址。

sip協定 https://www.cnblogs.com/gardenofhu/p/7299963.html

會話發起協定(SIP)是VoIP技術中最常用的協議之一。它是一種應用層協議,與其他應用層協定協同工作,透過Internet控制多媒體通訊會話。

SIP - 概述
以下是有關SIP的幾點注意事項 -

SIP是用於透過因特網協定創建,修改和終止多媒體會話的訊號協定。會話只不過是兩個端點之間的簡單呼叫。端點可以是智慧型電話,筆記型電腦或任何可以透過因特網接收和發送多媒體內容的裝置。

SIP是由IETF(Internet Engineering Task Force)標準定義的應用層協定。它在RFC 3261中定義。

SIP體現了客戶端 - 伺服器體系結構,以及使用HTTP和URL的URL和URI 以及SMTP的文字編碼方案和頭樣式。

SIP採用SDP(會話描述協定)的幫助,它描述了用於透過IP網路傳送語音和視訊的會話和RTP(即時傳輸協定)。

SIP可用於雙方(單播)或多方(多播)會話。

其他SIP應用程式包括檔案傳輸,即時通訊,視訊會議,網路遊戲,以及串流多媒體分發。

下圖說明了SIP在一般方案中的適用性 -

通常,SIP協定用於兩個或多個端點之間的網際網路電話和多媒體分發。例如,一個人可以使用SIP發起對另一個人的電話呼叫,或者有人可以與許多參與者建立電話會議。

SIP協定的設計非常簡單,配置有限的指令。它也是基於文字的,所以任何人都可以讀取SIP會話中的端點之間傳遞的SIP訊息。

有一些實體幫助SIP建立其網路。在SIP中,每個網元由SIP URI(統一資源標識符)來標識,它像一個位址。以下是網路元素-

用戶代理
代理伺服器
註冊伺服器
重定向伺服器
位置伺服器
用戶代理
它是SIP網路的端點和最重要的網路元素之一。端點可以啟動,修改或終止會話。用戶代理是SIP網路中最聰明的設備或網路元件。它可以是軟體電話,手機或筆記型電腦。

用戶代理程式在邏輯上分為兩部分 -

用戶代理客戶端(UAC) - 發送請求並接收回應的實體。

用戶代理伺服器(UAS) - 接收請求並發送回應的實體。

SIP是基於客戶機 - 伺服器架構,其中呼叫者的電話充當發起呼叫的客戶端,被叫方的電話充當回應呼叫的伺服器。

代理伺服器
網路元素接收來自使用者代理程式的請求並將其轉發給另一個使用者。

基本上代理伺服器的作用就像一個路由器。

它有一些智慧來了解SIP請求,並在URI的幫助下發送它。

代理伺服器位於兩個用戶代理之間。

來源和目的地之間最多可以有70個代理伺服器。

有兩種類型的代理伺服器 -

無狀態代理伺服器 - 它只是轉發收到的訊息。這種類型的伺服器不儲存任何呼叫或交易的資訊。

有狀態代理伺服器 - 這種類型的代理伺服器可以追蹤收到的每個請求和回應,如果需要,可以將來使用它。如果對方沒有回應,它可以重新發送請求。

註冊伺服器
註冊伺服器接受用戶代理程式的註冊請求。它可以幫助用戶在網路中進行身份驗證。它將URI和用戶的位置儲存在資料庫中,以幫助同一網域內的其他SIP伺服器。

看看下面的範例,顯示SIP註冊的過程。

這裡呼叫者想要向TMC網域註冊。因此,它會向TMC的Registrar伺服器發送REGISTER請求,並且伺服器在授權客戶端時傳回200 OK回應。

重定向伺服器
重定向伺服器接收請求,並在註冊器建立的位置資料庫中尋找請求的預期收件者。

重定向伺服器使用資料庫取得位置信息,並以3xx(重定向回應)回應給使用者。我們將在本教程的後面討論響應代碼。

位置伺服器
位置伺服器提供有關呼叫者可能的位置到重定向和代理伺服器的資訊。

只有代理伺服器或重新導向伺服器可以聯絡位置伺服器。

下圖描繪了每個網路元素在建立會話中所扮演的角色。

SIP - 系統架構
SIP被建構為分層協議,這意味著其行為根據一組相當獨立的處理階段來描述,只有每個階段之間的鬆散耦合。

SIP的最低層是其語法和編碼。其編碼使用增強的Backus-Naur表格語法(BNF)來指定。

第二層是傳輸層。它定義客戶端如何發送請求並接收回應,以及伺服器如何接收請求並透過網路發送回應。所有SIP元素都包含傳輸層。

接下來是事務層。事務是由客戶端事務(使用傳輸層)發送到伺服器事務的請求,以及從伺服器事務發送回客戶端的對該請求的所有回應。用戶代理客戶端(UAC)完成的任何任務都將使用一系列事務進行。無狀態代理不包含交易層。

交易層上面的層稱為交易用戶。除了無狀態代理之外,每個SIP實體都是一個事務用戶。

下圖顯示了SIP會話的基本呼叫流程。

以下是對上述通話流程的逐步說明 -

傳送到代理伺服器的INVITE請求負責啟動會話。

代理伺服器發送100 嘗試立即回應呼叫者(Alice)以停止INVITE請求的重新傳送。

代理伺服器在位置伺服器中搜尋Bob的位址。取得位址後,進一步轉送INVITE請求。

此後,Bob手機產生的180 振鈴(暫時回應)回到愛麗絲。

鮑伯拿起手機後一個200 OK響應很快產生。

一旦200 OK到達Alice,Bob 從Alice 收到一個ACK。

同時,會話建立,RTP資料包(會話)從兩端開始流動。

會話結束後,任何參與者(Alice或Bob)都可以發送一個BYE請求來終止會話。

BYE直接從Alice到Bob繞過代理伺服器。

最後,Bob發送200 OK回應來確認BYE,會話終止。

在上述基本呼叫流程中,可以使用三個事務(標記為1,2,3)。

完整的通話(從INVITE到200 OK)稱為對話Dialog。

SIP梯形
代理程式如何幫助一個使用者與另一個使用者連線?讓我們在下圖的幫助下找出。

圖中所示的拓樸結構稱為SIP梯形圖。過程發生如下 -

當呼叫方發起呼叫時,將向代理伺服器發送INVITE訊息。代理伺服器收到INVITE後,嘗試借助DNS伺服器解析受理者的位址。

在取得下一個路由之後,呼叫者的代理伺服器(代理1,也稱為出站代理伺服器)將INVITE請求轉送給作為被呼叫者的入站代理伺服器(代理伺服器2)的被呼叫者的代理伺服器。

入站代理伺服器聯絡位置伺服器以取得使用者註冊的被叫方位址資訊。

從位置伺服器取得資訊後,將通話轉送至其目的地。

一旦用戶代理知道他們的地址,他們可以繞過呼叫,即直接通話。

SIP訊息有兩種類型 - 請求和回應。

請求的開始行包含定義請求的方法,以及定義要傳送請求的請求URI。

類似地,回應的開始行包含回應碼。

請求方式
SIP請求是用來建立通訊的程式碼。為了補充它們,SIP回應通常指示請求是成功還是失敗。

這些被稱為METHODS的SIP請求使SIP訊息可行。

方法可以被認為是SIP請求,因為它們請求由另一用戶代理或伺服器採取的特定動作。

方法被分成兩種型別-

核心方法

擴充方法

核心方法
有六種核心方法,如下所述。

邀請
INVITE用來啟動與使用者代理程式的會話。換句話說,INVITE方法用於在用戶代理之間建立媒體會話。

INVITE可以在郵件正文中包含主叫方的媒體訊息。

如果INVITE已經接收到成功回應(2xx)或已經發送ACK,則會話被認為是建立的。

成功的INVITE請求在兩個用戶代理之間建立對話,直到發送BYE才能終止會話。

在已建立的對話方塊內發送的INVITE稱為re-INVITE。

Re-INVITE用於變更會話特性或重新整理對話方塊的狀態。

邀請範例
以下程式碼顯示了INVITE如何使用。

複製程式碼 

INVITE sips:Bob@TMC.com SIP/2.0  
  Via: SIP/2.0/TLS client.ANC.com:5061;branch = z9hG4bK74bf9  
  Max-Forwards: 70  
  From: Alicesips:Alice@TTP.com;tag = 1234567  
  To: Bobsips:Bob@TMC.com 
  Call-ID: 12345601@192.168.2.1 
  CSeq: 1 INVITE  
  Contact: sips:Alice@client.ANC.com  
  Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY  
  Supported: replaces  
  Content-Type: application/sdp  
  Content-Length: …
v = 0  
  o = Alice 2890844526 2890844526 IN IP4 client.ANC.com  
  s = Session SDP  
  c = IN IP4 client.ANC.com  
  t = 3034423619 0  
  m = audio 49170 RTP/AVP 0  
  a = rtpmap:0 PCMU/8000

複製程式碼

BYE 
BYE是用于终止既定会话的方法。这是SIP请求,可以由呼叫者或被叫方发送以终止会话。
它不能由代理服务器发送。
BYE请求通常路由端到端,绕过代理服务器。
BYE不能发送到待处理的INVITE或未建立的会话。
注册 
REGISTER请求执行用户代理的注册。该请求由用户代理发送到注册服务器。
REGISTER请求可以转发或代理,直到它到达指定域的权威注册商。
它在正在注册的用户的To头中携带AOR(记录地址)。
REGISTER请求包含时间段(3600sec)。
一个用户代理可以代表另一个用户代理发送REGISTER请求。这被称为第三方注册。这里,From标签包含代表To标题中标识的方提交注册的方的URI 。
取消 
CANCEL用于终止未建立的会话。用户代理使用此请求取消之前发起的未决呼叫尝试。
它可以由用户代理或代理服务器发送。
CANCEL是逐跳请求,即它通过用户代理之间的元素,并接收下一个有状态元素生成的响应。
ACK 
ACK用于确认对INVITE方法的最终响应。如果INVITE不可用,则ACK始终沿着INVITE.ACK的方向包含SDP主体(媒体特性)。
ACK可能不会用于修改已经在初始INVITE中发送的媒体描述。
接收ACK的有状态代理必须确定ACK应该向下游转发到另一个代理或用户代理。
对于2xx响应,ACK是端到端的,但对于所有其他最终响应,它在涉及有状态代理时基于逐跳的工作。
OPTIONS 
OPTIONS方法用于向用户代理或代理服务器询问其功能并发现其当前的可用性。对请求的响应列出了用户代理或服务器的功能。代理从不生成OPTIONS请求。

擴充功能
訂閱
用戶代理程式使用SUBSCRIBE建​​立訂閱,以取得特定事件的通知。

它包含一個Expires頭字段,指示訂閱的持續時間。

期限過後,訂閱將自動終止。

訂閱在用戶代理之間建立一個對話。

您可以在到期時間之前透過在對話方塊內發送另一個SUBSCRIBE來重新訂閱。

用戶訂閱將收到200 OK。

使用者可以使用Expires值0(零)發送另一個SUBSCRIBE方法來取消訂閱。

通知
使用者代理程式使用NOTIFY來取得特定事件的發生。通常,當訂戶和通知程式之間存在訂閱時,NOTIFY會在對話方塊內觸發。

如果通知程式接收到,每個NOTIFY將獲得200 OK回應。

NOTIFY包含指示事件的事件頭欄位和指示訂閱的目前狀態的subscriptionstate頭欄位。

總是在訂閱的開始和結束時發送NOTIFY。

發布
PUBLISH被用戶代理用於向伺服器發送事件狀態資訊。

當有多個來源的事件資訊時,PUBLISH是非常有用的。

PUBLISH請求類似於NOTIFY,除了它不在對話方塊中發送。

PUBLISH請求必須包含Expires頭字段和Min-Expires頭字段。

參考
REFER由用戶代理用於引用另一個用戶代理來存取對話方塊的URI。

REFER必須包含Refer-To標題。這是REFER的強制標題。

REFER可以在對話方塊內部或外部發送。

A 202 Accepted將觸發REFER請求,指示其他使用者代理程式已經接受引用。

訊息
INFO由使用者代理程式使用,以向其已經建立媒體會話的另一個使用者代理程式發送呼叫訊號訊息。

這是一個端到端的請求。

代理程式將始終轉發INFO請求。

UPDATE
如果會話未建立,則UPDATE用於修改會話的狀態。使用者可以使用UPDATE更改編解碼器。

如果會話建立,則使用重新邀請來變更/更新會話。

PRACK
PRACK用來確認接收到可靠的暫時回應轉移(1XX)。

一般來說,PRACK在接收到包含RSeq可靠序號和supported:100rel 頭的暫時回應時由客戶端產生。

PRACK在race頭部包含(RSeq CSeq)值。

PRACK方法適用於所有臨時回應,除了100嘗試回應,這是永遠不可靠的運輸。

PRACK可能包含訊息體; 它可以用於提供/答覆交換。

訊息
它用於使用SIP發送即時訊息。 IM通常由參與文字會話的參與者即時交換的短訊息。

MESSAGE可以在對話方塊內或對話方塊外傳送。

MESSAGE的內容作為MIME附件在郵件正文中載入。

一個200 OK被正常接收回應,以指示該訊息已在其目的地被遞送。

相關推薦:

php面試題一之主題與行程的差異(順帶提下協程)

#

以上是php面試題二之用過的傳輸協議的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn