文章目錄
1. 模型及TCP/IP模型
2. IP協議
網絡層協議
將消息從一個主機發送到另一個主機,消息在傳送的過程中被分割成一個個的小包。不能解決數據分組在傳輸過程中出現的問題,由此出現了TCP
3. TCP協議
傳輸層協議
TCP協議是一種可靠的網絡協議,它在通信實例的兩端各建立一個Socket,從而在通信的兩端之間形成網絡虛擬鏈路。一旦建立了虛擬的網絡鏈路,兩端的程序就可以通過虛擬鏈路進行通信。
總結一句話:是一種面向連接的,可靠的,基於字節流的傳輸層通信協議
3.1 作用
讓通信的連個主機之間建立一個連接:用於發送額接收數據的虛擬鏈路
3.2 適用情況
3.2 爲什麼說TCP可靠
採用了重發機制,當一個通信實體發送一個消息給另一個通信實體後,需要接收到另一個通信實體的確認消息,如果沒有收到另一個通信實體的確認消息,則會再次重發剛纔發送的消息
3.3 優點
- 可靠
3.4 缺點
- 相比UDP,效率低,對系統資源要求較多
4. UDP
UDP是傳輸層協議
UDP協議是一種不可靠的網絡協議,它在通信實例的兩端各建立一個Socket,但這兩個Socket之間並沒有虛擬鏈路,這兩個socket只是發送,接收數據報的對象。
總結一句話:是一種面向無連接的,不可靠的信息傳送服務
5. 作用
完成網絡數據流和數據報之間的轉換——在信息的發送端,UDP協議將網絡數據封裝成數據報,然後將數據報發送出去;在信息的接收端,UDP協議將數據報轉換成實際數據內容
5.1 適用情況
一次只傳送少量數據、對可靠性要求不高
5.2 爲什麼說UDP協議不可靠
UDP是一種面向非連接的協議,即在正式通信前不必與對方建立連接,不管對方狀態就直接發送。至於對象是否可以接收到這些數據內容,UDP協議是無法控制的,所以不可靠
5.3 優點
- 通信是無需建立連接,所以通信效率比較高
- 具有較好的實時性
5.4 缺點
- 不可靠,不能保證數據一定到達接收方
6. HTTP協議
應用層協議
HTTP是超文本傳輸協議,是客戶端瀏覽器或其他程序與Web服務器之間的應用層通信協議。在Internet上的Web服務器上存放的都是超文本信息, 客戶機需要通過HTTP協議傳輸所要訪問的超文本信息。HTTP包含命令和傳輸信息,不僅可用於Web訪問,也可以用於其他因特網/內聯網應用系統之間的通信,從而實現各類應用資源超媒體訪問的集成
HTTP協議是建立在請求/響應模型上的。首先由客戶建立一條與服務器的TCP鏈接,併發送一個請求到服務器,請求中包含請求方法、URL、協議版本以及
相關的MIME樣式的消息。服務器響應一個狀態行,包含消息的協議版本、一個成功和失敗碼以及相關的MIME式樣的消息。
雖然HTTP本身是一個協議,但其最終還是基於TCP的
8種請求:https://blog.csdn.net/jinianh/article/details/82844310
6.1 http的8種請求方式
- opions 返回服務器針對特定資源所支持的HTML請求方法 或web服務器發送*測試服務器功能(允許客戶端查看服務器性能)
- Get 向特定資源發出請求(請求指定頁面信息,並返回實體主體)
- Post 向指定資源提交數據進行處理請求(提交表單、上傳文件),又可能導致新的資源的建立或原有資源的修改
- Put 向指定資源位置上上傳其最新內容(從客戶端向服務器傳送的數據取代指定文檔的內容)
- Head 與服務器索與get請求一致的相應,響應體不會返回,獲取包含在小消息頭中的原信息(與get請求類似,返回的響應中沒有具體內容,用於獲取報頭)
- Delete 請求服務器刪除request-URL所標示的資源*(請求服務器刪除頁面)
- Trace 回顯服務器收到的請求,用於測試和診斷
- Connect HTTP/1.1協議中能夠將連接改爲管道方式的代理服務器
6.2 常見錯誤碼
常見有5類狀態碼詳細列出:
-
客戶方錯誤
100 繼續
101 交換協議 -
成功
200 OK
201 已創建
202 接收
203 非認證信息
204 無內容
205 重置內容
206 部分內容 -
重定向
300 多路選擇
301 永久轉移
302 暫時轉移
303 參見其它
304 未修改(Not Modified)
305 使用代理 -
客戶方錯誤
400 錯誤請求(Bad Request)
401 未認證
402 需要付費
403 禁止(Forbidden)
404 未找到(Not Found)
405 方法不允許
406 不接受
407 需要代理認證
408 請求超時
409 衝突
410 失敗
411 需要長度
412 條件失敗
413 請求實體太大
414 請求URI太長
415 不支持媒體類型 -
服務器錯誤
500 服務器內部錯誤
501 未實現(Not Implemented)
502 網關失敗
504 網關超時
505 HTTP版本不支持
7. IP、TCP/UDP、HTTP關係
TCP和UDP使用IP協議從一個網絡傳送數據包到另一個網絡。把IP想像成一種高速公路,它允許其它協議在上面行駛並找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,文件傳輸協議FTP這樣的協議等
IP協議來連接網絡;TCP是一種允許我們安全傳輸數據的機制,使用TCP協議來傳輸數據的HTTP是Web服務器和客戶端使用的特殊協議。HTTP基於TCP協議,但是卻可以使用socket去建立一個TCP連接
總之:TCP依賴IP,HTTP又基於TCP
8. 三次握手/四次揮手
博文推薦:https://blog.csdn.net/ZWE7616175/article/details/80432486
9. 長連接/短連接
長連接是指的TCP連接,而不是HTTP連接
博文推薦:https://www.jianshu.com/p/3fc3646fad80
10.網絡編程的通信模式
博文推薦:http://www.tianshouzhi.com/api/tutorials/netty/221,
select,poll,epoll講解:https://blog.csdn.net/qq_35976351/article/details/85228002