PYTHON-網絡通訊 TCP

網絡編程:    學習網絡編程    爲何?目的:    服務端特色:網絡通信(通訊)什麼是網絡通信?爲何?目的:網絡創建的目的是爲數據交互(通訊)如何實現通信(通訊)?互聯網協議互聯網=物理鏈接介質+互聯網協議互聯網協議:(open system interconnection)什麼是互聯網協議?    OSI七層協議/tcp/ip五層應表會 傳 網 數 物MAC地址ipportip+macip+port網頁地址解析什麼是網絡編程?socket套接字什麼是socket:socket中用戶最關心的是TCP和UDP    TCP:   協議:   傳輸方式:        優勢:        缺點:        使用場景:   套接字type參數:   同時鏈接客戶端數量:    UDP :        協議:        傳輸方式:        缺點:        優勢:        使用場景:   套接字type參數:   同時鏈接客戶端數量:TCP VS UDP 可靠性:TCP:TCP三次握手建鏈接,四次揮手斷鏈接TCP目的洪水攻擊TCP template半鏈接池,工做原理服務端須要遵循的原則粘包問題引發粘包的TCP特色自定義報頭TCP 遠程執行CMD(粘包的解決方法)UDP:UDP template============================================================網絡編程:1    學習網絡編程 其實就是在學socket套接字 *****    爲何?目的:編寫一個C/S架構的軟件,            二者基於網絡通訊 爲了使程序可以分佈在不一樣的計算上        C/S: Client--------基於網絡----------Server        B/S: Browser-------基於網絡----------Server        服務端特色:         一、不間斷地提供服務         二、服務端要支持併發+高性能2 網絡通信(通訊)什麼是網絡通信?*****    在不一樣的計算機上 一個安裝客戶端 另外一安裝服務端  經過網絡來通信爲何?目的:網絡創建的目的是爲數據交互(通訊)如何實現通信(通訊)?     1.創建好底層的物理鏈接介質 (網線,WIFI,光纖)---網絡工程師關注     2.通信協議(必須遵循相同的標準)---應用軟件開發者 關注            (比做在中國就像是講普通話,全世界就像是講英語)3 互聯網協議互聯網=物理鏈接介質+互聯網協議互聯網協議:(open system interconnection)什麼是互聯網協議?    比做 是計算機界的英語    OSI七層協議 **                              tcp/ip五層    應 (表 會) 傳 網 數 物    應用  應用軟件,自定義協議,須要雙方程序員商量(報頭)     應用層(表示層和會員層都屬於應用層)          瀏覽器協議(HTTP FTP..)    表示    會話    傳輸 -TCP/UDP-基礎port端口工做的協議                             傳輸層    網絡 -ip協議 (IP(DHCP分配),子網掩碼)                            網絡層            1.用來定義數據傳輸格式 2.定位一個局域網 3.定位一臺主機    數據鏈路層-以太網協議Ethernet(基於mac地址)-報頭(信封)和真實數據   數據鏈路層    物理層-發送電信號(二進制數10101 )                               物理層        傳輸層            TCP/UDP            TCP 傳輸是可靠的 傳輸前須要三次握手確認  傳輸過程當中須要返回確認            效率較低            UDP 不可靠傳輸  沒有三次握手 也沒有確認信息 僅僅傳輸數據 不關心接收方是否收到            使用socket接口完成TCP 和UDP以太網協議 規定 一個計算比須要一個網卡,一個網卡對應1個MAC地址,MAC能夠標識 惟一一臺計算機        古老的廣播式的通訊ip 能夠標識 在局域網內找到一臺計算機ip+mac能夠標識 全世界範圍內獨一無二的 一臺計算機的位置    (通訊的時候,必定要獲取對方的IP地址,拿到ip後,ARP協議自動將IP解析成MACport能夠標識 一臺計算機之上惟一的 一個基於網絡通訊的 應用軟件4 *****如何標識全世界範圍內獨一無二的一個socket程序(基於網絡通訊的 一個應用軟件)  ip+(mac)+port網頁地址解析    就是域名 ,將域名給到 DNS服務器(域名服務器) (基於UPD協議)解析成IP,(DNS默認端口53)    對應有ip 和端口port,到這臺機器上拿到路徑裏的文件    DNS 全球共13臺根服務器,最大有效傳輸512字節網頁:    https://    www.cnblogs.com:80                     /linhaifeng/p/7278389.html    應用層協議   域名+端口 (先把域名交給dns解析成IP地址)              路徑          邏輯層面建好雙向通路(TCP三次握手)              ==>給應用層按http協議傳輸數據,封包後交給傳輸層,給對方,再按這條線返回                (物理層 實際上在傳輸層後還有網絡層,數據鏈路層,物理層)5 socket套接字(*****)什麼是socket:  學習網絡編程 其實就是在學socket            socket套接字是位於應用層與傳輸層之間的一個抽象接口層            是一個在傳輸層上封裝好的模塊!(是對底層的 TCP UDP IP ethernet協議進行封裝)            要完成網絡通信,只須要調用socket的接口或者說按照socket的標準編寫程序,寫出的程序天然是遵循tcp/ip協議            (比做 打電話時電話機的接口 服務端:買電話 插電話卡 等電話鏈接 收發消息 掛電話 關機                                    客戶端:買電話 撥電話 收發消息 掛電話)    python中使用socket的時候用戶須要關心的是        ip地址,port端口, 傳輸協議TCP/UDP,你要發送的數據dataTCP和UDP是傳輸層最多見的協議(*****)    主要控制傳輸數據的方式    TCP        傳輸方式:要創建鏈接(流式協議:像水流同樣源源不斷的發過去)                       (數據量比較小,時間間隔較短的不會發過去,等下一次一塊兒)        優勢:             可靠協議,能夠保證數據的完整性  經過三次握手來與服務器創建鏈接                (好比 a機器給b機器發送數據包  要求b機器必須當即返回一個確認包                在對方確認後纔會中本身的操做系統緩存清除這個數據包                a機器會等待一段時間,若是超時尚未收到確認,則重發數據)        缺點:            傳輸效率比UDP低        使用場景:            文字聊天,支付寶轉帳等        套接字type參數:SOCK_STREAM        同時鏈接客戶端數量:1個    UDP :        傳輸方式:            不須要創建鏈接,直接發送,   數據報協議        優勢:            發送效率高,但有效傳輸的數據量最多爲500bytes        缺點:            不可靠:發送數據,無需對確認,容易丟包            發一條數據無需收到對方的確認消息,會馬上從本身的操做系統緩存中清除該條消息        使用場景:            視頻通話,語音通話等        套接字type參數:SOCK_DGRAM        同時鏈接客戶端數量:            能夠同時處理多個客戶端 是由於CPU處理速度快 給人感受像是同時處理TCP VS UDP 可靠性:    TCP可靠 是由於發送數據後必須收到確認包TCP  三次握手建鏈接,四次揮手斷鏈接       兩條雙向管道: C===>S 發消息管道  S===>C 收消息管道       (比做 雙11購物 一管道傳商品金額 另外一管道傳購物狀態信息)        三次握手: (syn,seq,ack,fin都是標誌位,表明不一樣含義)            c(客戶端)----syn=1(請求連接) seq=x(序列號)--->s(服務端)            s----ack=1+x  syn=1(請求連接) seq=y(序列號)--->c                (確認請求,並在原來序列號基礎上+1)            c----ack=1+y------->s            tcp創建的是一個雙向鏈接            c------------------>s            c<-----------------s        四次揮手:一般是服務端先有斷連接請求,節約資源            s------fin=1(斷連接請求)seq=x+2---------->c            c------>ack=3+x(確認請求)--------->s            c------>fin=1,seq=y+2--------->s  不能和上一條合併是由於S-C數據可能還沒傳完            s------>ack=3+y--------->c一、TCP  目的是創建雙向通路 傳輸數據可靠          ((好人協議)客戶端發包(發請求)後,服務端必定會響應 發出確認信息)    洪水攻擊 黑客模擬大量的客戶端發請求,讓服務端響應,虛擬的客戶端 服務端沒法識別 形成大量資源佔用                syn_send大量涌現(公司有預謀的發起)  解決方案:增長帶寬
相關文章
相關標籤/搜索