1. 程式人生 > >計算機網絡基本知識

計算機網絡基本知識

work sed 域名 last cat 滑動 路由 傳輸 packet

今天來講講網絡,主要將傳輸層和應用層的一些基礎知識

OSI七層模型:應用層(application)、表示層(presentation)、會話層(session)、傳輸層(transport)、網絡層(network)、數據鏈路層(data)、物理層(physical/base)。用一句英語總結就是 all people seem to need data base. TCP/IP體系結構是分為4層,分別是應用層、傳輸層、網際層IP、網絡接口層。

網絡層:網絡層把運輸層產生的報文段或用戶數據報封裝成分組或包(packet)進行傳送,網絡層的一個重要任務就是選擇合適的路由進行轉發。

傳輸層:負責向兩臺主機中進程之間的通信提供通用的數據傳輸服務。傳輸控制協議(TCP)和用戶數據報協議(UDP)位於傳輸層。

TCP結構:由TCP首部(源端口和目的端口、序號、確認號、數據偏移、保留位、[URG, ACK, PSH, RST, SYN, FIN],窗口,檢驗和,選項)和數據部分組成。

UDP結構:UDP首部(源端口,目的端口,長度,檢驗和)+ 數據

TCP和UDP的區別?

  1、tcp提供面向連接的,可靠的數據傳輸服務,udp提供無連接的盡最大努力交付(不保證可靠傳輸);

  2、tcp比udp更耗系統資源,udp傳輸速度比tcp塊(因為不需要進行連接和擁塞控制);

  3、udp端口支持一對一、一對多、多對多的通信,而每條tcp連接只支持一對一;4、udp頭部開銷為8個字節,tcp為20字節。

UDP為什麽支持一對多?

  這是因為一個udp端口會關聯一個報文隊列(緩存),udp根據目的端口號將到達的報文加到對應隊列,不同源而同一目的地的報文會定位到同一隊列。

TCP如何實現可靠傳輸?

  1、 數據編號和確認;

  2、 采用滑動窗口協議進行了流量控制;

  3、 超時重傳時間的選擇合適;

  4、 擁塞控制機制。

TCP三次握手四次揮手時狀態變化:

三次握手:

    1、 初始狀態:客戶端處於CLOSED狀態,服務器處於LISTEN

狀態;

    2、 客戶端(第一次握手):發送SYN(client),客戶端處於SYN_SENT狀態;

    3、 服務器(第二次握手):收到SYN(client),,服務器被動打開連接,發送SYN(server),ACK,服務器處於SYN_REVD狀態;

    4、 客戶端(第三次握手):收到SYN(server),發送SYN(client),ACK,客戶端建立連接處於ESTABLISHED狀態;

    5、 服務器:收到ACK,處於ESTABLISHED狀態。

  四次揮手:

    1、 客戶端(第一次揮手):客戶端沒有數據要發送了,主動進行關閉,發送FIN(client),處於FIN_WAIT_1狀態,等待服務器發送完數據;

    2、 服務器(第二次揮手):收到FIN(client),發送ACK,處於CLOSE_WAIT狀態,把未發送完的數據繼續發送;

    3、 客戶端:收到ACK,處於FIN_WAIT_2狀態,接收服務器發來的數據;

    3、 服務器(第三次揮手):數據發送完畢,發送FIN(server),處於LAST_ACK狀態;

    4、 客戶端(第四次揮手):收到FIN(server),發送ACK,進入TIME_WAIT狀態,定時經過兩倍報文段壽命時間後變回CLOSED狀態;

    5、 服務器:收到ACK,回到CLOSED狀態。

應用層:應用層協議定義的是應用進程間通信和交互的規則。DNS、http、ftp、smtp等協議位於應用層。

在瀏覽器輸入url(例如www.baidu.com)回車後發生的事件?

  1、 瀏覽器向DNS請求解析www.baidu.com 的ip地址;

  2、 域名系統DNS解析出百度的IP地址;

  3、 瀏覽器與服務器建立tcp連接;

  4、 瀏覽器發出取文件命令:GET;

  5、 服務器給回響應,把文件發送給瀏覽器;

  6、 釋放tcp連接;

  7、 瀏覽器顯示文件的內容。

http/1.0和http/1.1區別:

  http1.0采用非持續連接方式,每一次請求/響應對應一個tcp連接,瀏覽器每次請求文件會與服務器建立tcp連接,收到響應後就關閉連接,所以對應如果一個網頁上有很多引用的對象(比如圖片),每次請求這些對象都要進行tcp連接,從tcp三次握手方式可以可以看出瀏覽器從發出請求到收到響應需花費2個往返時間,可以看出開銷很大;

  http1.1使用持續連接方式較好的解決了http1.0的問題,持續連接指的是在服務器響應後仍保持連接,並且http1.1還可以使用流水線工作方式,在瀏覽器收到響應報文之前能夠連續發送多個請求報文,這樣服務器就可以一個接一個收到請求報文,然後發回一個接一個的響應報文(節省了許多往返時間)。

http的報文結構:

  1、 請求行/狀態行:請求行包含 請求的方法(如GET、POST)、請求的url、http的版本,狀態行包含 版本、狀態碼、解釋狀態碼的短語;

  2、 首部行:用來說明瀏覽器、服務器或報文文體的一些信息;

  3、 實體主體:請求報文一般不用這個字段(請求方法為POST會有這個字段用來存放發送給服務器的數據),響應報文通常是返回個客戶的文檔。

狀態碼有5類:

  1、 1xx 表示通知信息的,如請求收到了或正在進行處理

  2、 2xx 表示成功,如接受或知道了

  3、 3xx 表示重定向,完成請求後還要采取進一步行動

  4、 4xx 表示客戶差錯,如請求中有錯誤的語法或資源找不到了

  5、 5xx 表示服務器差錯,如服務器無效無法完成請求

例:單擊超鏈接瀏覽器發送的報文:

  1、 請求行: GET 超鏈接URL HTTP/1.1

  2、 首部行: HOST:www.xxx.com

  Connection:close

  User-Agent:Mozilla/5.0(用戶代理使用的瀏覽器)

  Accept-Language:cn:

http和https的區別:

  1、 http是無狀態的,連接方式簡單,這個狀態指的是在通信期間客戶端和服務器在臨時會話中產生的數據(在標準的http協議裏是沒有cookie和session的),無狀態也即對事務處理沒有記憶能力,而https的連接方式是http+ssl。

  2、 http是明文傳輸,信息傳輸未經過加密;https是經過ssl加密的;

  3、 http端口為80,https為443;

  4、 https協議需要用到數字證書,數字證書要向證書授權(CA)機構申請,需要一定的費用。

以上為內容如有錯誤請指出,謝謝!

計算機網絡基本知識