網絡中的 TCP/IP

 

 

 

TCP/IP

OSI的「實現」:TCP/IP數據庫

OSI七層模型瀏覽器

TCP/IP概念層模型緩存

功能安全

TCP/IP協議族服務器

應用層cookie

應用層網絡

文件傳輸、電子郵件、文件服務、虛擬終端session

FTP,HTTP,SMTP,SNMP,Telnet性能

表示層加密

數據格式化、代碼轉換、數據加密

會話層

解除或創建與別的接點的鏈接

傳輸層

傳輸層

提供端對端的接口

TCP,UDP

網絡層

網絡層

爲數據包選擇路由

IP,ICMP,RIP,OSPF,IGMP

數據鏈路層

鏈路層

傳輸喲偶地址的幀以及錯誤檢測功能

SLIP,CSLIP,PPP,ARP,RARP

物理層

以二進制數據形式在物理媒體上傳輸數據

ISO2110,IEEE802,IEEE802.2

 

 

 

經常使用的TCP端口號有:HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53等;經常使用的保留UDP端口號有:DNS 53,BootP 67(server)/ 68(client),TFTP 69,SNMP 161等。

TCP的三次握手

TCP Flags

      URG:緊急指針標誌

      ACK:確認序號標誌

      PSH:push標誌

      RST:重置鏈接標誌

      SYN:同步序號,用於創建鏈接過程

      FIN:finish標誌,用於釋放鏈接(1:發送方已無數據發送)

 

「握手」是爲了創建鏈接,TCP三次握手的流程圖以下:

 

 

 

在TCP/IP協議中,TCP協議提供可靠的鏈接服務,採用3次握手創建一個鏈接。(sequence number 即上圖中x ,y值)

一、第一次握手:創建鏈接時,客戶端發送SYN包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認。

二、第二次握手:服務器收到SYN包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態。

三、第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTAB_LISHED狀態,完成三次握手。

 

談談TCP的四次揮手

揮手是爲了終止鏈接,TCP四次揮手的流程圖以下:

 

 

TCP採用四次揮手來釋放鏈接

一、第一次揮手:client 發送一個FIN,用來關閉client到server的數據傳送,client進入FIN_WAIT_1狀態。

二、第二次揮手:server收到FIN後,發送一個ACK給client,確認序號爲收到的序號加1(與SYN相同,一個FIN佔用一個序號),server進入CLOSE_WAIT狀態。

三、第三次揮手:server發送一個FIN,用來關閉server到client的數據傳送,server進入LAST_ACK狀態。

四、第四次揮手:client收到FIN後,client進入TIME_WAIT狀態,接着發送一個ACK給server,確認序號爲收到的序號+1,server進入CLOSED狀態,完成四次揮手。(client在2MSL時間以後也會關閉)

 

TCP鏈接必須通過2MSL後才真正的釋放?

確認有足夠的時間讓對方收到ACK包

   避免新舊鏈接混淆

 

UDP簡介

UDP特色

一、面向非鏈接

二、不維護鏈接狀態,支持同時向多個客戶端傳輸相同的消息

三、數據包報頭只有8個字節,額外開銷較小

四、吞吐量只受限於數據生成速率、傳輸速率以及機器性能

五、盡最大努力交付,不保證可靠交付,不須要維持複雜的連接狀態表

六、面向報文,不對應用程序提交的報文信息進行拆分或者合併

結論

      TCP             UDP

一、面向鏈接    vs    無鏈接

二、可靠性     vs     無

三、有序性     vs     無

四、速速慢      vs     快(適用於在線媒體  廣播等)

五、量級(20個字節)     vs     8個字節

  

TCP的滑動窗口

RTT和RTO

   RTT:發送一個數據包到收到對應的ACK,所花費的時間

   RTO:重傳時間間隔(客戶端發送一個ack時默認啓動一個定時器,服務器在必定的時間沒有返回相應的包時啓動定時器重新發送一個)(通過RTT計算出RTO)

 

HTTP簡介

超文本傳輸協議HTTP主要的特色

一、支持客戶/服務器模式

二、簡單快速

三、靈活(傳輸任意類型數據)

四、無鏈接(每次鏈接限制一個請求,服務器處理完客戶請求並收到客戶應答以後即斷開,節省傳輸時間。http1.1默認使用長鏈接服務器默認等待必定時間後才斷開鏈接,以保證鏈接特性)

五、無狀態(協議對事物的處理沒有狀態)

 

請求/響應的步驟

一、客戶端鏈接到Web服務器

二、發送HTTP請求

三、服務器接收到請求並返回HTTP響應

四、釋放鏈接TCP鏈接

五、客戶端瀏覽器解析HTML內容

 

在瀏覽器輸入URL按下回車經歷的流程

一、DNS解析

二、TCP鏈接(找到IP地址和端口後和服務器創建TCP鏈接)

三、發送HTTP請求

四、服務器處理請求並返回HTTP報文

五、瀏覽器解析渲染頁面

六、鏈接結束

 

HTTP狀態碼

五種可能的取值

一、1××:只是信息—表示請求已接收,繼續處理

二、2××:成功—表示請求已被成功接收、理解、接受

三、3××:重定向—要完成請求必須進行更進一步的操做

四、4××:客戶端錯誤—請求語法錯誤或請求沒法實現

五、5××:服務器端錯誤—服務器未能實現合法的請求

 

常見的狀態碼

一、200:正常返回信息 – 成功

二、400(bad request):客戶端請求語法錯誤,不能被服務器所理解

三、401(unauthorized):請求未經受權,這個狀態代碼必須和www-authorized報頭域一塊兒使用

四、403(forbidden):服務器收到請求可是拒絕提供服務

五、404(not found):請求資源不存在

六、500(internal server error):服務器發生不可預期的錯誤

七、503(server unavailable):服務器當前不能處理客戶端的請求,一段時間後可能恢復正常。

  

 

POST請求和GET請求

三個層面來解答

一、HTTP報文層面:GET將請求信息放在URL,POST放在報文體中

二、數據庫層面:GET符合冪等性(對數據庫的一次操做和屢次操做是一致的)和安全性,POST不符合

三、其餘層面:GET能夠被緩存、被存儲,POST不行

 

 

Cookie和Session的區別

Cookie的簡介

一、是由服務器發送給客戶端的特殊信息,以文本的形式存放在客戶端

二、客戶端再次請求的時候,會把cookie回發

三、服務器收到後,會解析cookie生成與客戶端相對應的內容

 

Cookie的設置以及發送過程

 

 

 

Session的簡介

一、服務器的機制,在服務器上保存的信息

二、解析客戶請求並操做session id ,按需保存狀態信息

 

Session的實現方式

    使用cookie來實現

 

 

 

Cookie和Session的區別

一、cookie數據存放在客戶的瀏覽器上,session數據存放在服務器上

二、session相對於cookie更安全

三、考慮到減輕服務器的負擔,應當使用cookie

 

 

HTTP和HTTPS的區別

 

一、HTTPS須要到CA申請證書,HTTP不須要

二、HTTPS密文傳輸,HTTP明文傳輸

三、鏈接方式不一樣,HTTPS使用443端口,HTTP使用80端口

四、HTTPS = HTTP + 加密 + 認證 + 完整性保護,較HTTP安全

 

 

Socket簡介

 

 

 

 

 

 

經常使用的TCP端口號有:HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53等;經常使用的保留UDP端口號有:DNS 53,BootP 67(server)/ 68(client),TFTP 69,SNMP 161等。

相關文章
相關標籤/搜索