0 基礎概念
- IP地址:ipv4/ipv6
- ipv4地址分類:A、B、C、D、E類。主要區別爲網絡號、主機號佔有多少位的區別。
- CIDR(無類型域間選路):將32位IP地址一分爲二,前多少位爲網絡號,剩餘的爲主機號。表示方法爲:10.100.122.2/24。24表示前24位位網絡號,後8位位主機號。
- 廣播地址:即向這個地址發送消息,全部主機都能接受到。廣播地址位二進制主機號變爲1,如上面的位10.100.122.255。
- 子網掩碼:將二進制網絡號變爲1,其他位變爲0。如上述IP子網掩碼爲255.255.255.0。經過子網掩碼域IP地址取and計算可求出網絡號。
- 共有IP:想要與互聯網進行鏈接,讓全世界的人能夠訪問必需要有共有IP。
- 私有IP:局域網內分配的IP,一般如192.168.1.xxx,局域網IP是能夠重複的。不一樣的局域網能夠有相同的IP地址。
- Mac 地址:網卡的物理標識,全球惟一。至關於人的身份證。IP地址具備定位功能,Mac 地址沒法定位,或者說定位功能有限。
- DHCP(動態主機配置協議):局域網內自動配置IP地址。新來的機器用IP地址0.0.0.0發送廣播包,目的IP地址爲255.255.255.255。使用的是UDP協議。DHCP服務器會經過新機器的Mac 地址進行IP地址分配,新機器再確認這個IP。最後DHCP會廣播告訴你們新機器使用了這個IP。
- APR協議:已知IP地址,求Mac 地址。在一個局域網內,發送廣播消息,誰是這個IP誰來回答。爲了不每次都進行APR請求,會有緩存。
- 交換機:
- 網關:必定和源IP地址同網段,一般是第一個或第二個。如192.18.1.0/24這個網段,網關地址每每爲192.168.1.1/24或192.68.1.1.2/24。當目標地址和源地址不是同一個網段是,須要先把數據發給網關,發給網關的過程是同樣的,要先經過APR協議獲得網關的Mac地址。而後的轉發就徹底靠網關。網關每每是個路由器,是一個三層轉發設備。不改變IP地址的爲轉發網關,改變IP地址的爲NAT網關。
1 網絡分層
根據osi網絡七層協議以及tcp/ip四層分法的綜合,有如下五層網絡分層。從上到下依次以下所示:編程
- 應用層:經過應用進程間的交互完成特定功能。
- 傳輸層:負責向兩臺主機進程之間的通訊提供通用的數據傳輸服務。
- 網絡層:選擇合適的網間路由和交換節點,確保數據及時傳送。
- 鏈路層
- 物理層
1.1 各層重要概念
- 應用層:主要爲http協議
- 傳輸層:主要爲tcp、udp協議
- 網絡層:ip
- 鏈路層:mac
2 傳輸層重要協議
2.1 UDP協議
UDP和TCP的區別:緩存
什麼是面向鏈接的?在互通以前先經過協議創建鏈接,如TCP協議的三次握手。所謂創建鏈接,是經過某種數據結構維護客戶端和服務端的鏈接狀態。安全
- TCP提供可靠的交付。TCP協議傳輸數據保證無差錯、無丟失、無重複、按順序傳達。而UDP不保證。
- TCP面線字節流。UDP繼承來IP包特性,是基於數據包發送的。
- TCP具備擁塞控制,而UDP則不會。
UDP三大特色:服務器
- 溝通簡單
- 輕信他人。不會創建鏈接,誰均可以向它發送數據,它也能夠向任何人發送數據,還能同時向多人發送。
- 不會變通。無論網絡環境如何,發送的狀態不會改變,改怎麼發仍是怎麼發。
UDP三大使用場景:網絡
- 須要資源少,網絡情況好的內網環境下,對於丟包不敏感的應用。如DHCP。
- 不須要一對一溝通,創建鏈接,而是能夠廣播的應用。
- 須要處理速度快,時延低,能夠容忍少數丟包的場景。
UDP使用例子:數據結構
- 流媒體協議,若是網絡直播。
- 實時遊戲。須要創建長鏈接,若是爲TCP協議,服務器壓力大,須要爲每一個鏈接進行處理。而UDP無需鏈接。同時遊戲須要時延低。
- 物聯網:一方面終端資源有限,一般是嵌入式系統,維護TCP協議代價太大。另外一方面因爲時延性問題。
2.2 TCP協議(重點)
TCP包頭格式複雜:多線程
- 順序問題,穩重不亂
- 丟包問題,承諾靠譜
- 鏈接順序,善始善終
- 流量控制,把握分寸
- 擁塞控制,知進知退
TCP三次握手:負載均衡
TCP四次揮手:socket
流量控制:tcp
擁塞控制:
TCP如何保證數據可靠傳輸?
3 Socket編程
服務器如何鏈接更多Socket:
- 多進程方式
- 多線程方式
- 多路複用,select
- 多路複用,epoll(epoll是Linux系統獨有的)
4 Http協議
請求行:請求方法,URL路徑,版本號
首部:
實體:
響應行:版本號,狀態碼,短語
首部:
實體:
5 Https協議
- 對稱加密:
- 非對稱加密:
- Https協議經過非對稱加密傳輸對稱加密所須要的密匙保證安全,以後數據傳輸仍是經過對稱加密。
6 DNS協議