首先,糾正一下我以前一直誤解的概念,我一直以為Http和Tcp是兩種不同的,但是地位對等的協議,雖然知道TCP是傳輸層,而http是應用層今天學習了下,知道了http是要基於TCP連接基礎上的,簡單的說,TCP就是單純建立連接,不涉及任何我們需要請求的實際數據,簡單的傳輸。http是用來收發數據,即實際應用上來的。
第一:從傳輸層,先說下TCP連接,我們要和服務端連接TCP連接,需要通過三次連接,包括:請求,確認,建立連接。即傳說中的“三次握手協議”。
第一次:C發送一個請求連接的位碼SYN和一個隨機產生的序列號給Seq,然后S收到了這些數據。
第二次:S收到了這個請求連接的位碼,啊呀,有人向我發出請求了么,那我要不要接受他的請求,得實現確認一下,於是,發送了一個確認碼 ACN(seq+1),和SYN,Seq給C,然后C收到了,這個是第二次連接。
第三次:C收到了確認的碼和之前發送的SYN一比較,偶喲,對上了么,於是他又發送了一個ACN(SEQ+1)給S,S收到以后就確定建立連接,至此,TCP連接建立完成。
簡單就是:請求,確認,連接。
第二:從實際上的數據應用來說httP:
在前面客戶端和應用服務器建立TCP連接之后,就需要用http協議來傳送數據了,HTTP協議簡單來說,還是請求,確認,連接。
總體就是C發送一個HTTP請求給S,S收到了這個http請求,然后返回給Chttp響應,然后C的中間件或者說瀏覽器把這些數據渲染成為了網頁,展示在用戶面前。
第一:發送一個http請求給S,這個請求包括請求頭和請求內容:
request header:
包括了,1.請求的方法是POST/GET,請求的URL,http協議版本2.請求的數據,和編碼方式3是否有cookie和cooies,是否緩存等。
post和get請求方式的區別是,get把請求內容放在URL后面,但是URL長度有限制。而post是以表單的形勢,適合要輸入密碼之類的,因為不在URL中顯示,所以比較安全。
request body:
即請求的內容.
第二:S收到了http請求,然后根據請求頭,返回http響應。
response header:包括了1.cookies或者sessions2.狀態嗎3.內容大小等
response body:
即響應的內容,包括,JS什么的。
第三,C收到了以后,就由瀏覽器完成一系列的渲染,包括執行JS腳本等。
這就是我所理解的webTCP,HTTP基礎知識,待續。。。。。