進擊のpython
網絡編程——TCP/UDP協議
其實你也發現了,應用層是交給應用來處理的,我們什么也做不了
相較於網絡編程來說,我們更重要的是在做應用層和傳輸層的對接
因為你也看到了,如果我傳輸層成功了,后面的層級其實是自動進行的
那,傳輸層的關鍵是什么呢????協議!
那傳輸層的協議有什么呢?TCP/UDP協議
那我們現在就可以針對這兩個協議來進行學習,看看如何才能把信息傳到下一層
-
TCP協議
TCP協議是什么呢?TCP協議其實也叫流式協議
就是像流水一樣傳輸的協議
他將數據看作流水一般,在服務端和客戶端之間傳輸
那我問你熬,我要是想把這個水流給你,直接扔給你?
不能把,我是不是要通過一個管子給你啊
在咱倆之間創建一個管子,然后我把水通過這個管子流給你
那你也想把水流給我,你能用我的管子嗎?不能吧
你也得整個管子,然后把水流流給我是吧
那我是有水流了現挖管子嘛?不是吧!
我應該先挖管子,然后等到有水流的時候直接用是吧
而且 我再問你 你管子一下子就整完了?
也不是吧,是不是要有一點時間來做管子啊
而且還有一個問題,我要往你那挖就能挖嘛?
不是吧,是不是應該征求你的同意啊
所以說!要是搭建這個傳輸層應該是這樣的:
我問你同不同意建管道
你給我個回應說你同意
你問我同不同意建管道
我給你個回應說我同意
沒問題吧,這個操作過程
那我們把一次過程叫做握手的話,那這是... ...四次握手!
但是啊,TCP協議是三次握手,怎么握手呢?
你會發現第二步和第三步都是你的操作
所以本着省事的原則,二三步就可以是確認並請求對吧
那這樣,就變成了三次握手
三次握手的完成也就是兩端的管道搭建成功
同時,TCP協議,也是可靠傳輸協議
什么叫可靠??就是我傳信息的時候,你必須要給你一個反饋信息
我拿到你的反饋信息,我才繼續下面的操作,否則我就一直給你傳
那我還有問題,水流總是要流完的吧,那我流完了之后是不是要拆管道了
怎么拆呢?
我跟你說我要拆管道
你給我個回應說你同意
你跟我說你要拆管道
我給你個回應說我同意
對吧!就是這樣的吧
那我們能不能像三次握手一樣,把第二步第三步合在一起呢?
我跟你說我的水流完了,要斷開沒問題吧
但是你是不是要把流向你的水流完才能跟我說你要斷開
總不能我水剛流完你就流完了吧,這不科學啊
所以不能合在一起
那我把每一步都叫揮手的話,那這就叫四次揮手
-
UDP協議
UDP協議比較好玩的就是,他根本不需要管道
而且她知道了你的ip和端口之后,直接把數據扔給你
管你接沒接到,所以相比較TCP來說傳數據的過程就不可靠了
但是,相較於TCP來說,UDP的發送效率更高
因為不用建管子,也不用接受確認信息
這一塊的理論部分就結束了
后面就是教你怎么創建管道傳輸數據了