HTTP數據庫
HTTP協議是一種應用層協議,HTTP是HyperText Transfer Protocol(超文本傳輸協議)的英文縮寫。HTTP能夠經過傳輸層的TCP協議在客戶端和服務器之間傳輸數據。HTTP協議主要用於Web瀏覽器和 Web服務器之間的數據交換。咱們在使用IE或Firefox瀏覽網頁或下載Web資源時,經過在地址欄中輸入,開頭的4個字母http就至關於通知瀏覽 器使用HTTP協議來和host所肯定的服務器進行通信。瀏覽器
原理安全
HTTP是一個基於TCP/IP通訊協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)的請求應答協議。服務器
HTTP協議工做於客戶端-服務端架構爲上。瀏覽器做爲HTTP客戶端經過URL向HTTP服務端即WEB服務器發送全部請求。Web服務器根據接收到的請求後,向客戶端發送響應信息。網絡
HTTP特色:架構
一、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法經常使用的有GET、HEAD、POST。socket
二、靈活:HTTP容許傳輸任意類型的數據對象。傳輸的類型由Content-Type加以標記。tcp
3.無鏈接:限制每次鏈接只處理一個請求。服務器處理完請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。加密
4.無狀態:無狀態是指協議對於事務處理沒有記憶,後續處理須要前面的信息,則必須重傳。spa
http與https的區別?
HTTPS是HTTP協議的安全版本,HTTP協議的數據傳輸是明文的,是不安全的,HTTPS使用了SSL/TLS協議進行了加密處理。
經常使用的請求方法:
GET:請求指定的頁面信息,並返回實體主體。
POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會致使新的資源的創建和/或已有資源的修改。
HEAD:相似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
PUT:從客戶端向服務器傳送的數據取代指定的文檔的內容。DELETE:請求服務器刪除指定的頁面。請求報文構成
http請求由請求行、消息報頭、請求正文構成。請求行以一個方法符號開頭,以空格分開,後面跟着請求的URL和協議的版本。響應報文構成。HTTP響應也由狀態行、消息報頭、空行和響應正文構成。
傳輸層的通訊協議(TCP/UDP)
TCP提供一對一的、面向鏈接的可靠通訊服務。TCP創建鏈接,對發送的數據包進行排序和確認,並恢復在傳輸過程當中丟失的數據包。與TCP不一樣,UDP提供一對一或一對多的、無鏈接的不可靠通訊服務。TCP和UDP都是IP層面的傳輸協議,是IP與上層之間的處理接口。
TCP是確認包的到達,因此不丟失包(數據),順序也是好的。
UDP不會確認包的到達,因此可能會丟失數據包,固然順序也有可能會亂。
除了這些之外:
1. TCP是面向鏈接(鏈接三次握手、斷開四次揮手)的,因此穩定、可靠,那相對就慢了
好比平時的:大文件傳輸,右鍵,http等用的都是tcp協議
2. UDP是面向無鏈接的,因此不穩定,可是相對快,實時性高、傳送數據大小限制
好比平時:作什麼現場直播,視頻通話啥的
(SYN:同步序列編號(Synchronize Sequence Numbers)。是TCP/IP創建鏈接時使用的握手信號。ACK (Acknowledgement)便是確認字符,在數據通訊中,接收站發給發送站的一種傳輸類控制字符。FIN是用來掃描保留的端口,發送一個FIN包(或者是任何沒有ACK或SYN標記的包)到目標的一個開放的端口,而後等待迴應。許多系統會返回一個復位標記。
在客戶機和服務器之間創建正常的TCP網絡鏈接,客戶機首先發出一個SYN消息,服務器使用SYN+ACK應答表示接收到了這個消息,最後客戶機再以ACK消息響應。
在客戶端與服務器結束TCP鏈接時,客戶端首先發送一個FIN包到服務器,服務器收到後反饋一個ACK,而後再發送一個FIN包給客戶端,客戶端接收後在放送一個ACK消息迴應,到此這次鏈接徹底斷開。)
在TCP和UDP頭部分,有「源端口」和「目標端口」段,主要用於顯示發送和接收過程當中的身份識別信息。IP 地址和端口號合在一塊兒被稱爲「套接字」。TCP端口比較複雜,其工做方式與UDP端口不一樣。UDP端口對於基於UDP的通訊做爲單一消息隊列和網絡端點來操做,而全部TCP通訊的終點都是惟一的鏈接。每一個TCP鏈接由兩個端點惟一識別。因爲全部TCP鏈接由兩對 IP 地址和TCP端口惟一識別(每一個所連主機都有一個地址/端口對),所以每一個TCP服務器端口都能提供對多個鏈接的共享訪問.
TCP全稱是Transmission Control Protocol,中文名爲傳輸控制協議,它能夠提供可靠的、面向鏈接的網絡數據傳遞服務。傳輸控制協議主要包含下列任務和功能:
tcp功能
對程序發送的大塊數據進行分段和重組。確保正確排序及按順序傳遞分段的數據。
經過計算校驗和,進行傳輸數據的完整性檢查。根據數據是否接收成功發送確定消息。經過使用選擇性確認,也對沒有收到的數據發送否認確認。爲必須使用可靠的、基於會話的數據傳輸程序,如客戶端/服務器數據庫和電子郵件程序,提供首選傳輸方法。
首先發送方主機向接收方主機發起一個創建鏈接的同步(SYN)請求;接收方主機在收到這個請求後向發送方主機回覆一個同步/確認(SYN/ACK)應答;發送方主機收到此包後再向接收方主機發送一個確認(ACK),此時TCP鏈接成功創建.一旦初始的三次握手完成,在發送和接收主機之間將按順序發送和確認段。關閉鏈接以前,TCP使用相似的握手過程驗證兩個主機是否都完成發送和接收所有數據。完成三次握手,客戶端與服務器開始傳送數據。
UDP全稱是User Datagram Protocol,中文名爲用戶數據報協議(報文協議:短息等)。UDP 提供無鏈接的網絡服務,該服務對消息中傳輸的數據提供不可靠的、最大努力傳送。這意味着它不保證數據報的到達,也不保證所傳送數據包的順序是否正確。每一個數據限制在64k之內。(存在掉幀、掉數據包)。
4、簡述七層模型與四層模型的區別?列出常見的網絡協議?
七層: OSI 開放系統互聯參考模型,它是理論的,參考模型
物理層->數據鏈路層->網絡層->傳輸層->會話層->表示層->應用層
(電腦) (交換機) (路由器)
物理層:RJ4五、CLOCK、IEEE802.3
數據鏈路層:PPP、FR、HDLC、VLAN、MAC
網絡層:IP、IPX、OSPF、RIP、IGRP、ICMP、ARP、RARP
傳輸層:TCP、UDP、SPX
會話層:NFS、SQL、NETBIOS、RPC
表示層:JPEG、MPEG、ASII
應用層:Telnet、HTTP、FTP、WWW、NFS、SMTP
四層: TCP/IP模型 ,如今實際應用的這一層
網際接口層->互聯網層->傳輸層->應用層
物理層: 主要定義的是—傳輸介質 好比 RJ-45等 這一層沒啥協議,都是規範啥的
數據鏈路層:就是平時的局域網,局域網內的數據傳輸 MAC層
傳輸層:TCP、UDP
應用層:HTTP、HTTPS、DNS、SMTP 發送郵件端口、POP3收郵件端口
FTP端口,負責傳出數據, 端口負責發起和創建鏈接TELNET
DHCP—動態主機配置協議, 客戶端請求用的67端口,服務器迴應用的是68端口
常見協議:
IP (Internet Protocol)網際協議
ICMP (Internet Control Message Protocol)網絡控制信息協議 (平時的ping)
IGMP (Internet Group Management Protocol)組管理協議
NAT (Network Address Translation) 網絡地址轉換
Socket(套接字層、插座---AT&T)
Socket就是爲網絡服務提供的一種機制。它是使用標準Unix 文件描述符 (file descriptor) 和其它程序通信的方式。套接字(socket)是通訊的基石,是支持TCP/IP協議的網絡通訊的基本操做單元。它是網絡通訊過程當中端點的抽象表示,包含進行網絡通訊必須的五種信息:
(鏈接使用的協議,本地主機的IP地址,本地進程的協議端口,遠地主機的IP地址,遠地進程的協議端口)。
在Unix中,網絡便是socket,並不侷限在TCP/UDP, socket能夠用於自定義協議。
通訊的兩端都是socket
網絡通訊其實就是socket間的通訊
數據在來兩個socket間經過io傳輸
Socket開始是純c語言的,是跨平臺的。
套接字有兩個流:一個輸入流和一個輸出流
套接字的每一端都有兩個流。
HTTP與TCP區別和聯繫
聯繫:http是要基於TCP鏈接基礎上的,簡單的說,TCP就是單純創建鏈接,不涉及任何咱們須要請求的實際數據,簡單的傳輸。http是用來收發數據,即實際應用上來的。
區別:TCP是底層通信協議,定義的是數據傳輸和鏈接方式的規範。
HTTP是應用層協議,定義的是傳輸數據的內容的規範
HTTP協議中的數據是利用TCP協議傳輸的,因此支持HTTP也就必定支持TCP
HTTP支持的是www服務 ,而TCP/IP是協議 它是Internet國際互聯網絡的基礎。TCP/IP是網絡中使用的基本的通訊協議。 TCP/IP其實是一組協議,它包括上百個各類功能的協議,如:遠程登陸、文件傳輸和電子郵件等,而TCP協議和IP協議是保證數據完整傳輸的兩個基本的重要協議。一般說TCP/IP是Internet協議族,而不僅僅是TCP和IP。
爲何鏈接的時候是三次握手,關閉的時候倒是四次握手?
答:由於當Server端收到Client端的SYN鏈接請求報文後,能夠直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。可是關閉鏈接時,當Server端收到FIN報文時,極可能並不會當即關閉SOCKET,因此只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端全部的報文都發送完了,我才能發送FIN報文,所以不能一塊兒發送。故須要四步握手。
爲何TIME_WAIT狀態須要通過2MSL(最大報文段生存時間)才能返回到CLOSE狀態?
答:雖然按道理,四個報文都發送完畢,咱們能夠直接進入CLOSE狀態了,可是咱們必須假象網絡是不可靠的,有能夠最後一個ACK丟失。因此TIME_WAIT狀態就是用來重發可能丟失的ACK報文。