網絡編程

 架構 -- 程序員開發的一種模式程序員

C/S    客戶端/服務器模式面試

B/S      Browser瀏覽器/服務器編程

(B/S      Browser瀏覽器/服務器至關於網頁版的客戶端,例如 網頁QQ 網頁微信,遊戲等)設計模式

B/S架構的優點: 統一了應用的接口瀏覽器

 

 

網絡通訊編程:
 兩臺電腦  如何通訊?      --- 一條網線就能夠辦到
 
 多臺電腦  如何通訊?      --- 交換機
 
 更多太電腦  如何通訊?    --- 交換機+路由器安全


[   兩臺電腦怎麼會通訊呢?
   每臺電腦都會有個網卡,  在usb接口處    網卡:mac地址    mac地址:物理地址
   網卡通常是由網卡生產廠商給的 ,不能隨便給,要遵循必定規則.  爲何呢?
   由於mac地址要求全球惟一                                                                                         
]服務器

 mac 地址:
 在cmd中查看命令  ipconfig  -all
 --------mac地址是12位十六進制組成---------微信

-------ip 地址是四位點分十進制  字節是8位--------網絡

服務器1尋找服務器2的mac地址步驟:
1,發送請求幀給交換機
2,交換機以廣播方式找尋服務器2
3,服務器2接收到請求返回給交換機
4,交換機以單薄方式返回給服務器1架構

整個過程就是服務器1 經過服務器2的ip地址,藉助交換機的功能,找到了服務器2的mac地址(arp協議)

arp協議: 經過目標ip地址獲取目標mac地址  

 

 

 

端口:操做系統爲每個應用程序分配一個端口號 ip+端口號惟一肯定惟一程序

若是給你一個ip地址,如何去肯定它是否是在你當前的局域網內呢?
 ip地址  &(餘)  子網掩碼

 ex:
     ip地址    192.168.1.12
          1100 0000 . 1010 1000 . 0000 0001 . 0000 1100
  
          1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
    
     結果 1100 0000 . 1010 1000 . 0000 0001 . 0000 0000
       ---> 192.168.1.0 網段
    
  子網掩碼  255.255.255.0
 

子網掩碼: 是與ip地址進行餘運算獲得網段


  用網段來肯定一個ip地址是否在你當前的局域網內.
 
  網段 = ip地址    &     子網掩碼


[如何尋找外網? (本身的理解)
 服務器會記錄ipv4(好比 www.baidu.com) 發送給交換機
 交換機發現我沒有,而後發給路由器沒有的話,發送給代理ip, 代理ip發送請求

 若是有兩個班級,如何從這個班級尋找另外一個班的網呢?
 服務器1發送ip給交換機,交換機沒有發送後給網關,網關發給路由器,路由器尋找,找到後進入

  尋找]


路由器:  有一個路由表 記錄了歸他管理的全部網段

局域網 :   兩臺電腦也算是局域網,
廣域網:  泛指國際, 國際上中國就算是一個局域網

                                                                                                                                             協議:  由多人指定的一種規則                                                                                                    

TCP 和UDP協議 (通訊協議)
 是經過socket模塊去操做 tcp和udp協議的


它們兩個的區別是什麼??
 1.tcp協議: 表明安全可靠通訊方式 面向鏈接
 2.udp協議: 不安全,不可靠的通訊方式,可是快!!

 

 

ip地址:127.0.0.1  
這是個迴環地址,不管何時均可以表明本機ip地址(只限本機使用)

 

 

 

 

 

有一道面試題:
 
tcp協議:
 三次握手: 注意必須是client(客戶端) 先發起請求
  1,client發送給server(服務端)我想鏈接你,能夠麼
  2,server回覆client, 能夠,我也想鏈接你,能夠嗎?
  3,client回覆server, 能夠

 四次揮手: 誰先發起請求均可以
  1,client發送請求:我準備斷開鏈接了,我沒有數據須要發送了
   若是你有數據能夠繼續發給我
  2,server回覆: 確認接收到你的請求,我開始着手準備斷開事宜
  3,server回覆: 我準備好了,能夠隨時斷開鏈接
  4,client回覆:斷開鏈接吧

 

面試該怎麼回答三次握手四次揮手呢?

  三次握手:

      首先必須先由客戶端發起鏈接的請求,接下來,服務器接收到請求以後,回覆給客戶端兩個標識,

      syn表示服務器接收到的請求,一個ack表示服務器在作準備工做,兩個標識一塊兒回覆給客戶端

      最後,客戶端接收到服務器的回覆,客戶端準備鏈接的全部資源,開始進行鏈接,發送給服務器一

      個ack表示客戶端的鏈接準備工做已經完成.(此時表示客戶端和服務器能夠相互鏈接了.)

      -------若是面試官問 哪句代碼體現了三次握手?

      ------- 回答: 服務器端的accept,客戶端 connect   

  

  四次揮手:

      ⑴ 首先由鏈接雙方任意一方發起斷開鏈接的請求,發起方發送的請求表示是我沒有數據要繼  

       續發送了,能夠斷開鏈接了,可是你若是還有數據能夠繼續向我發送數據

      ⑵接收方回覆給發起方,表示接到了發起方的斷開請求,開始着手準備斷開事宜

      ⑶接收方準備完成後,給發起方發送一個標識,標識接收方沒有數據發送了,能夠斷開鏈接了

      ⑷發起方接受到消息後,準備斷開鏈接,回收資源

      ---------若是面試官問:哪句代碼體現了四次揮手?

      ---------回答: close()

 

socket概念

 

理解socket

Socket是應用層與TCP/IP協議族通訊的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket接口後面,對用戶來講,一組簡單的接口就是所有,讓Socket去組織數據,以符合指定的協議。

其實站在你的角度上看,socket就是一個模塊。咱們經過調用模塊中已經實現的方法創建兩個進程之間的鏈接和通訊。
也有人將socket說成ip+port,由於ip是用來標識互聯網中的一臺主機的位置,而port是用來標識這臺機器上的一個應用程序。
因此咱們只要確立了ip和port就能找到一個應用程序,而且使用socket模塊來與之通訊。

 

互聯網協議與osi模塊
 osi 五層模型:
  應用層  : .py文件
                  http,ftb,tftb...
  傳輸層  : tcp/udp
  網絡層  : ip協議
  數據鏈路層  : arp協議  ,網卡
  物理層  : 網線,集線器,光纖

相關文章
相關標籤/搜索