1.計算機基礎:
學python 寫程序軟件 eg:
暴風 qq word ... 應用軟件 間接控制硬件
操做系統windows/linux... 系統軟件 控制程序 讓硬盤 內存 cpu 運轉起來
計算機硬件 硬件 硬盤 內存 cpu 網卡
2.c/s架構
客戶端 服務端
Client Server
操做系統 操做系統
硬件 硬件
網卡(網線)-交換機-路由器-...(網絡)網卡
3.網絡是什麼?
網絡:底層的物理連接介質+ 互聯網協議(計算機界的英語)
1.連網線
2.標準 全球用 互聯網協議 互聯網協議就是計算機界得英語 全部計算機都能通訊
OSI七層:(Open System Interconnection)
1.應用層 ...
2.表示層 ...
3.會話層 做文
4.傳輸層 語法
5.網絡層 單詞
6.數據鏈路層 字母
7.物理層 英標
TCP/IP五層 四層
1.應用層 1.應用層
2.傳輸層 2.傳輸層
3.網絡層 3.網絡層
4.數據鏈路層 4.接口層
5.網絡層
4.五層協議詳解:
物理層 電信號:01010101101 a - 97
數據鏈路層 對電信號 分組 使數字有意義 分組協議 = Ethernet協議 = 以太網協議 -> 網卡 mac地址(惟一的) mac(同一個子網)
head(18字節 = 6 源地址(mac) 6 目標地址(mac) 6 數據的描述) + data mac_head + ip_head + data
以太網的工做模式: 廣播 --> 以太網基於mac地址的廣播的方式來完成數據的傳遞 --> 只能在局域網完成 局域網才能找對對方
網絡層: IPv4 IPv6 head(IP頭 源地址+目的地址) + data iphead+data ip(哪個子網) iphead + heac(tcp/udp) + data
ip + mac 就能找到全世界中惟一的計算機 ip->找到哪個子網 mac->找到具體哪一臺機器
ARP 協議 把ip地址解析成mac地址
傳輸層 tcp + udp 格式: head(tcp/udp) + data tcp/udp 基於端口工做的 端口:0 - 65535 一個軟件一個端口 0-1024給操做系統使用的
ip+端口 就能找到全世界範圍內的惟一一個軟件 head(tcp) + head(應用頭) + data
服務端最好一直對外提供 服務端的端口和ip要捆綁固定 不能隨便變 客戶端的端口可隨便變
應用層 暴風 qq ... 軟件 格式: head(應用頭)+data 應用協議:http/ftp...
五層串起來:--->: 應用層產生數據head(固定長度)+data -> 傳輸層 -> 網絡層 - > 數據鏈路層 -> 物理層
5.傳輸層詳解:
tcp: 流式協議; 像水流同樣 發數據 管道流數據 雙向管道 c--->s c<---s 沒有數據前 就先建管道
挖管道:
1.client 發個請求 要挖了 c--->s # syv=1 發請求 icq=x 序列號 數據包的編號
2.server 迴應了 能夠 而且我也要挖一條 確認+ 請求 s-->c # ack=1 + x 確認 syv=1 發請求 icq = y
3.client 迴應了 能夠 c-->s s-->c 成功 三次握手 # ack=1 + y 確認
tcp是可靠傳輸 s獲得包以後迴應收到 c沒收到確認信息 就在傳一遍 因此叫可靠傳輸
斷開連接:
1.client 發請求 要斷開了 fin=1
2.server ack=1 確認 注:這裏不能發請求要斷開 由於不肯定s->c數據是否傳完了
3.server 發請求 要斷開了 fin=1
4.client ack=1 確認
udp: 沒通道 client 一直髮數據 不須要 對方迴應 一直髮 斷電了或者網絡出問題 client 無論 因此不可靠
tcp: 可靠 對方給了確認收到信息,才發下一個,若是沒收到確認信息就重發
效率: tcp 可靠 效率低
udp 不可靠 效率高 不須要建管道 不須要等待對方迴應
6.網絡編程/scoket 編程:
參考: http://www.cnblogs.com/linhaifeng/articles/6129246.html
socket 是什麼?
Socket是應用層與TCP/IP協議族通訊的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,
它把複雜的TCP/IP協議族隱藏在Socket接口後面,對用戶來講,一組簡單的接口就是所有,讓Socket去組織數據,以符合指定的協議。
因此,咱們無需深刻理解tcp/udp協議,socket已經爲咱們封裝好了,咱們只須要遵循socket的規定去編程,寫出的程序天然就是遵循tcp/udp標準的。
socket 就是 == 片面說: ip + 端口
socket兩你們族(兩種套接字的類型):
1.基於文件類型的套接字家族 AF_UNIX 一臺機器上 兩個軟件通訊
2.基於網絡類型的套接字家族 AF_INET 基於網絡通訊
socket工做流程: