基本概念
【1】基礎知識
【2】網絡體系結構
(1)OSI開放系統互聯模型
(2)TCP/IP協議族的體系結構:
【3】TCP和UDP
【4】Socket
【6】其他概念
【1】基礎知識
1)計算機與網絡發展的7個階段
1、批處理(20世紀50年代):是指實現將用戶每個數據裝入卡帶或者磁帶。并有計算機按照一
定的順序讀取,是用戶所要執行的這些程序和數據能夠一并批量得到處理的方式。2、分時系統(20世紀60年代):是指多個終端(包含鼠標、鍵盤、顯示器等輸入
輸出設備組
成,最初還包括打印機)與一臺計算機連接,允許多個用戶同時使用一臺計算機的
系統。
特性:多路性、獨占性、交互性和及時性。
3、計算機之間的通信(20世紀70年代)
4、計算機網絡的產生(20世紀80年代)
5、互聯網的普及(20世紀90年代)
6、以互聯網技術為中心的時代(2000年)
7、從“單純建立連接”到“安全建立連接”(2010年)
2)早期的ARPAnet使用網絡控制協議
(Network Control Protocol,NCP)
不能互聯不同類型的計算機和不同類型的操作系統,沒有糾錯功能
3)網絡體系結構
指網絡的層次結構和每層所使用協議的集合
4)通信協議
1、協議:一組控制數據通信的規則。三要素:①語法(包括數據格式、編碼及信號電平等)②
語義(包括用于協議和差錯處理的控制信息)③時序(包括速度匹配和排
序)。
2、標準:一致同意的規則。分類:①事實上的標準:實際情況或者習慣②合法標準:法律或者
規章制度
3、標準化組織:緩慢發展:ISO:國際標準化組織;ITU-T:國際電聯-電信標準
部;ANSI:美
國國家標準化局;IEEE:電氣電子工程師協會(主要是以太網、局域網方面
的);
EIA:電子工業協會(物理傳輸標準、光釬傳輸)。快速發展:論壇:幀中繼
論壇、
ATM論壇;管理機構:FCC 聯邦通信委員會。Internet標準:RFC
【2】網絡體系結構
(1)OSI開放系統互聯模型
1)ISO(國際標準化組織)制定了一個國際標準OSI(開放式通信系統互聯參考模型,),對通信系統
進行了標準化。(理想模型,實際只有四層)
2)OSI模型將通信協議中必要的功能分成了7層,每個分層都接收有它下一層所提供的特定
服務,并
且負責為自己的上一層提供特定的服務。上下層之間進行交互時所遵循的約定叫做“接口”。同一
層之間的交互所遵循的約定叫做“協議”。
3)7層通信
1、應用層:指定特定應用的協議(比如發送和接受文件的軟件按鈕,發送者輸入“早上好”并附
上收件人,按下發送按鈕,接受者收到信息會將其存儲在硬盤或者非易失
存儲器
(數據不會因為斷電而丟失的一種存儲設備)上,這些都是在應用層上
的)。應用
程序:FTP、E-mail、Telnet
2、表示層:設備固有數據格式和網絡標準數據格式的轉換(接受者和發送者如果使用的郵件客
戶端不一樣,那么就會出現問題,如何實現用戶之間的通信,那么就需要
在表示層
來起作用,使得在不同的客戶端上擁有相同的網絡格式)。數據格式定
義、數據轉
換/加密
3、會話層:通信管理,負責建立或者斷開通信連接(發送者一次性發送5份郵件,那么接受者如
何接受,是一次性接受所有的文件然后斷開連接還是沒接受一次就斷開,
然后在此
進行,發送者同理)。建立通信進程的邏輯名字與物理名字之間的聯系4、傳輸層:管理兩個節點(互聯的網絡中斷)之間的數據傳輸。負責可靠傳輸
(確保數據被可
靠地傳送到目標地址)(確保發送者和接受者之間的通信,會話層負責決
定建立連
接和斷開連接的時機,而傳輸層進行實際的建立和斷開處理)。差錯處
理/恢復,流
量控制,提供可靠的數據傳輸
5、網絡層:地址管理與路由選擇,作用:在網絡相互連接的環境中,將數據從發送端主機發送
到接受端主機。數據分組、路由選擇
6、數據鏈路層:互連設備之間傳送和識別數據幀。數據組成可發送、接收的幀
7、物理層:以“0”、“1”代表的電壓的高低、燈光的閃滅。界定連接器和網絡的規格。傳輸物理信
號、接口、信號形式、速率
(2)TCP/IP協議族的體系結構:
1、應用層: TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
2、傳輸層: TCP,UDP
3、網絡層: IP,ICMP,RIP,OSPF,BGP,IGMP 傳輸單位為分組
4、網絡接口與物理層: SLIP,CSLIP,PPP,ARP(解析mac地址),RARP,MTU ISO2110,
IEEE802.1,EEE802.2
備注: IP(Internetworking Protocol)網間協議
TCP(Transmission Control Protocol)傳輸控制協議
UDP(User Datagram Protocol)用戶數據報協議 SMTP(Simple Mail Transfer Protocol)簡單郵件傳輸協議 HTTP(Hypertext Transfer Protocol) 超文本傳輸協議 FTP(File Transfer Protocol)文件傳輸協議 ARP(Address Resolution Protocol)地址解析協議
TCP/IP協議是根據OSI模型發展而來的,(實際應用的結構)
TCP:用來檢測網絡傳輸中差錯的傳輸控制協議。IP:專門負責對不同網絡進行互聯的互聯網協議IP吧
【3】TCP和UDP
TCPUDP
(Transmission Control Protocol)(User Datagram Protocol)
即傳輸控制協議用戶數據報協議
共同點同為傳輸層協議
不同點有連接,可靠無連接,不保證可靠
是一種面向連接的傳輸層協議,它能提供
高可靠性通信是一種面向連接的傳輸層協 是不可靠的無連接的協議。在數據發送前,因
描述議,它能提供高可靠性通信(即數據無誤、為不需要進行連接,所以可以進行高效率的數
數據無丟失、數據無失序、數據無重復到據傳輸。
達的通信)
發送小尺寸數據(如對DNS服務器進行IP地址
適合于對傳輸質量要求較高,以及傳輸大 查詢時)在接收到數據,給出應答較困難的網量數據的通信。在需要可靠數據傳輸的場 絡中使用UDP。(如:無線網絡)適合于廣適用情況 合,通常使用TCP協議QQ等即時通訊軟件播/組播式通信中。MSN/QQ/Skype等即時通的用戶登錄賬戶管理相關的功能通常采用 訊軟件的點對點文本通訊以及音視頻通訊通常
TCP協議 采用UDP協議流媒體、VOD、VoIP、IPTV等網絡多媒體服務中通常采用UDP方式進行實時
數據傳輸
【4】Socket
1)概念:
是一個編程接口
是一種特殊的文件描述符 (everything in Unix is a file)
并不僅限于TCP/IP協議
面向連接 (Transmission Control Protocol - TCP/IP)
無連接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange
- IPX)
2)socket類型
發送緩沖區16K
接收緩沖區85K(默認)使用getsockopt獲取使用setsockopt
設置
3)分類:
1、流式套接字(SOCK_STREAM)
提供了一個面向連接、可靠的數據傳輸服務,數據無差錯、無重
復的發
送且按發送順序接收。內設置流量控制,避免數據流淹沒慢的接
收方。
數據被看作是字節流,無長度限制。
--->TCP
2、數據報套接字(SOCK_DGRAM)
提供無連接服務。數據包以獨立數據包的形式被發送,不提供無
差錯保證,
數據可能丟失或重復,順序發送,可能亂序接收。
--->支持UDP,也支持其他的傳輸協議,并非為UDP設計。3、原始套接字(SOCK_RAW)
可以對較低層次協議如IP、ICMP直接訪問。
【5】IP地址
1)查看指令: linux:ifconfig windows:ipconfig
2)概念:
IP地址是Internet中主機的唯一標識
IP地址為32位(IPv4)或者128位(IPv6)
每個數據包都必須攜帶目的IP地址和源IP地址,路由器依靠此信息為數據包選擇路
由
IPV4的表示形式:常用點分十進制形式,如192.168.8.222,最后都會轉換為一個32位的無符號整數。
3)IP地址分類(基于IPV4地址的前八位)
A類 0000 0000 - 0111 1111 0.x.x.x - 127.x.x.x
(8bit網絡號 24bit主機號)2^24 - 2 (全0和全1不可用)
B類 1000 0000 - 1011 1111 128.x.x.x - 191.x.x.x
(16bit網絡號 16bit主機號)2^16 - 2
C類 1100 0000 - 1101 1111 192.x.x.x - 223.x.x.x
(24bit網絡號 8bit主機號)2^8 - 2
D類 1110 0000 - 1110 1111 224.x.x.x - 239.x.x.x 表示組播
地址
(不做網絡號和主機號的劃分)
E類 1111 0000 - 1111 1111 240.x.x.x - 255.x.x.x 屬于保留測試
(剩余部分)
127.x.x.x 表示主機地址(本機回環地址)127.0.0.1(不經過網卡,網卡不能夠抓取數據包)
192.168.x.x 表示局域網IP地址
0.0.0.0 本機地址自適配,會自動填寫網卡對應的IP地址
192.168.8.x
192.168.8.0 表示網段或者網絡地址
192.168.8.255 表示廣播地址
4)子網掩碼:可以表示當前IP地址的最大連接的主機的個數,用于子網劃分 mask & IP地址留下的就是網絡號(通常情況下 )
~mask & IP地址留下的就是主機號
A類:255.0.0.0 2~242^24
B類:255.255.0.02~16 2^16
C類:255.255.255.02~8 2^8
首先根據網絡號進行查找,找到相應的群,然后根據主機號找到對應的具體IP主機。
5)局域網地址:
A類:10.xxx.xxx.xxx
B類:172.16.xxx.xxx ~ 172.31.xxx.xxx
C類:192.168.xxx.xxx
【6】其他概念
1)網關:作內外網隔離(兩張網卡)NAT內外網映射
2)DNS:域名解析服務
(114.114.114.114)中國電信域名服務
(223.5.5.5)(223.6.6.6)阿里云域名服務
(8.8.8.8)谷歌域名服務
3)DDNS:動態域名解析服務(花生殼)
第一次域名查詢 網關會向域名服務器 查詢,之后網關會把IP地址寫到自己的DNS映射。
DNS劫持:修改網關對應的DNS映射表,將映射網址修改到其他的釣魚網站。4)端口號 :(在/etc/services文件內查看已經被占用的端口號)
為了區分一臺主機接收到的數據包應該轉交給哪個進程來進行處理,使用端口號來
區別
端口號一般由IANA (Internet Assigned Numbers Authority) 管理分類:
眾所周知端口:1~1023(1~255之間為眾所周知端口,256~1023端口通常由UNIX系統占用)
web服務器(80)
已登記端口:1024~49151 騰訊客戶端(8080)
動態或私有端口:49152~65535
一般設置為 6666 7777 8888 9999 10000 10001 TCP和UDP各有一套端口號。
5)字節序
不同類型CPU的主機中,內存存儲多字節整數序列有兩種方法,稱為主機字節序
(HBO):
小端序(little-endian) - 低序字節存儲在低地址
將低字節存儲在起始地址,稱為“Little-Endian”字節序,Intel、AMD等采用的是這種方式;
大端序(big-endian)- 高序字節存儲在低地址
將高字節存儲在起始地址,稱為“Big-Endian”字節序,由ARM、
Motorola等所采用
如何測試主機字節序:
方法1:使用指針
方法2: 使用file命令,file a.out 其中LSB的L代表小端存儲
方法3:使用共用體
網絡中傳輸的數據必須按網絡字節序,即大端字節序
6)#include
①in_addr_t inet_addr(const char *cp); 將點分十進制IP地址轉化為網絡字節序的整型數據
②char *inet_ntoa(struct in_addr in); 將網絡字節序的整型數據轉化為點分十進制IP地址
例子:inet_addr("192.168.8.189");
③uint32_t htonl(uint32_t hostlong);將主機字節序轉化為網絡字節序
④uint16_t htons(uint16_t hostshort);
⑤uint32_t ntohl(uint32_t netlong);將網絡字節序轉化為主機字節序
⑥uint16_t ntohs(uint16_t netshort);
7)MAC地址,多用于局域網。根據MAC地址,當用戶連入網絡時,網關會生成MAC映射表,用于數據傳輸。