按照網絡作用范圍分類:
(1)廣域網WAN (2)城域網MAN (3)局域網LAN (4)個人區域網PAN
OSI七層模型
OSI中的層 |
功能 |
相關協議 |
應用層 |
文件傳輸,電子郵件,文件服務,虛擬終端 |
HTTP,FTP,SMTP,DNS,DHCP |
表示層 |
數據格式化,代碼轉換,數據加密 |
|
會話層 |
解除或建立與別的接點的聯系 |
SQL,SCP |
傳輸層 |
提供端對端的可靠的報文傳遞和錯誤恢復 |
TCP,UDP |
網絡層 |
負責數據包從源到宿的傳遞和網際互聯 |
IP,ARP,ICMP |
數據鏈路層 |
傳輸有地址的幀以及錯誤檢測功能,點對點傳遞 |
PPP |
物理層 |
以二進制數據形式在物理媒體上傳輸數據 |
|
數據鏈路層使用的信道主要有兩種:
點對點信道(使用PPP協議) 廣播信道(使用CSMA/CD協議)
數據鏈路層三個基本問題
封裝成幀 透明傳輸 差錯檢測
中間設備:
(1)物理層:轉發器或集線器
(2)數據鏈路層:網橋或橋接器或交換機
(3)網絡層:路由器
(4)網絡層以上的:網關
ARP地址解析協議:由IP地址找出其相應的硬件地址
請簡單解釋一下,arp協議和arp攻擊。
地址解析協議。ARP攻擊的第一步就是ARP欺騙。由上述“ARP協議的工作過程”我們知道,ARP協議基本沒有對網絡的安全性做任何思考,當時人們考慮的重點是如何保證網絡通信能夠正確和快速的完成——ARP協議工作的前提是默認了其所在的網絡是一個善良的網絡,每台主機在向網絡中發送應答信號時都是使用的真實身份。不過后來,人們發現ARP應答中的IP地址和MAC地址中的信息是可以偽造的,並不一定是自己的真實IP地址和MAC地址,由此,ARP欺騙就產生了。
兩級IP缺點:
IP地址空間的利用率有時很低
給每一個物理網絡分配一個網絡號會使路由表變得太大因而使網絡性能變壞
兩級IP地址不夠靈活
socket與TCP/IP的對應關系
Socket是對TCP/IP協議的抽象,是操作系統對外開放的接口
運輸層兩個重要協議:
用戶數據報協議UDP:面向事務的不可靠信息傳送服務,適用於多點廣播,對可靠性要求低的場景
傳輸控制協議TCP:面向連接的、可靠的、基於字節流的傳輸層通信協議,適用於需要數據完整性與實時性的場景
TCP四種擁塞控制算法:慢開始,擁塞避免,快重傳,快恢復
TCP運輸連接有三個階段:連接建立、數據傳送、連接釋放
三次握手,四次揮手
第一次:建立連接,客戶端發送SYN包(seq=x)到服務器,並進入SYN_SENT狀態,等待服務器確認;
第二次:服務器收到SYN包,確認客戶的SYN(ack=x+1),同時自己也發送一個SYN+ACK包(seq=y),此時服務器進入SYN_RCVD狀態;
第三次:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(seq=x+1,ack=y+1),此包發送完畢,客戶端和服務器進入ESTAB_LISHED狀態,完成三次握手
第一次:客戶端發送FIN,用來關閉客戶端到服務器端的數據傳送,客戶端進入FIN_WAIT_1狀態
第二次:服務器發送ACK給客戶端,服務器進入CLOSE_WAIT狀態,此時服務器還可以給客戶端發送數據,反之不行
第三次:服務器發送FIN,用來關閉服務器到客戶端的數據傳送,服務器進入LAST_ACK狀態
第四次:客戶端收到FIN后,發送ACK給服務器,然后進入TIME_WAIT狀態,服務器進入CLOSED狀態,客戶端等待2MSL后進入CLOSED狀態,完成四次揮手
為什么要等待2MSL時間:
確保有足夠的時間讓對方收到ACK包
避免新舊連接混淆
域名系統DNS(Domain Name System):從域名解析出IP地址。
域名服務器四種類型:
(1)根域名服務器(2)頂級域名服務器(3)權限域名服務器(4)本地域名服務器
文件傳送協議FTP(File Transfer Protocol)
萬維網WWW(World Wide Web)
統一資源定位符URL
簡單郵件傳送協議SMTP
代理服務器(proxy server)
作用:代理服務器把最近的一些請求和響應暫存在本地磁盤中,當新請求到達時,若代理服務器發現這個請求與暫時存放的請求相同,就返回暫存的響應,而不需要按URL的地址再次去互聯網訪問該資源。減輕出口路由負擔。
在瀏覽器中輸入網址后執行的全部過程
1.查找域名對應的IP地址。這一步會依次查找瀏覽器緩存,系統緩存,路由器緩存,ISPNDS緩存,根域名服務器。
2.向IP對應的服務器發送請求。
3.服務器響應請求,發回網頁內容。
4.瀏覽器解析網頁內容。
輸入 ping IP 后敲回車,發包前會發生什么?
首先根據目的IP和路由表決定走哪個網卡,再根據網卡的子網掩碼地址判斷目的IP是否在子網內。如果不在則會通過arp緩存查詢IP的網卡地址,不存在的話會通過廣播詢問目的IP的mac地址,得到后就開始發包了,同時mac地址也會被arp緩存起來。
IP地址的編碼分為哪倆部分?
分網絡號和主機號
A類IP第一字節是網絡號,后三字節是主機號
B類IP前兩字節是網絡號,后兩字節是主機號
C類IP前三字節是網絡號,后一字節是主機號
HTTP和HTTPS的主要區別?
http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
ttp的連接很簡單,是無狀態的;
HTTPS默認使用443端口,HTTP使用80端口
HTTPS=HTTP+加密+認證+完整性保護,較HTTP安全
HTTPS需要到CA申請證書,HTTP不需要
HTTPS建立連接過程
1 客戶端訪問https連接
2 服務器端發送證書(公鑰)給客戶端
3 客戶端驗證服務器端的證書,生成隨機字符串並加密數據
4 服務器端接收加密信息,解密得到客戶端提供的隨機字符串
HTTP狀態碼
1xx:指示信息——表示請求已接收,繼續處理
2xx:成功——表示請求已被成功接收、理解、接受
3xx:重定向——要完成請求必須進行更進一步的操作
4xx:客戶端錯誤——請求有語法錯誤或請求無法實現
5xx:服務器端錯誤——服務器未能實現合法的請求
Cookie: https://mp.weixin.qq.com/s/iDOoeBA48gnoJUhkCHosqA
GET請求和POST請求的區別
HTTP報文層面:GET將請求信息放在URL,POST放在報文體中
數據庫層面:GET符合冪等性和安全性,POST不符合
其他層面:GET可以被緩存、被存儲,而POST不行
TCP粘包/拆包
TCP是個“流”協議,所謂流,就是沒有界限的一串數據,它們是連成一片的,其間並沒有分界線。
TCP粘包:socket讀取時,讀到了實際意義上的兩個或多個數據包的內容,同時將其作為一個數據包進行處理。
TCP拆包:socket讀取時,沒有完整地讀取一個數據包,只讀取一部分。
解決思路:
(1)消息定長,例如每個報文的大小為固定長度200字節,如果不夠,空位補空格;
(2)在包尾增加回車換行符進行分割,例如FTP協議;
(3)將消息分為消息頭和消息體,消息頭中包含表示消息總長度的字段;
(4)更復雜的應用層協議。