主要內容:瀏覽器
1.客戶端 \ 服務端架構服務器
客戶端英文名稱:Client,服務端英文名稱Server, 所謂C\S架構就是說Client\Server微信
2.網絡通訊的整個流程網絡
以本地的電腦上的瀏覽器去訪問的京東網站的整個流程這種B\S架構來舉例架構
(1)網卡和mac 地址socket
(2) IP地址網站
(1)IP地址的格式編碼
編碼的回顧: 一個字節等於8位,8個2進制的數能夠表示256個字節此處IP地址是由點分割的四個十進制的數,而十進制的數在計算機中是由二進制表示的,即spa
(2)網絡配置的大體方法code
配置好本身電腦的網絡信息以後,咱們就有了身份證(mac地址)和名字(IP地址),經過他們,咱們就在網絡中有了本身的身份,只要有網,咱們就能夠正大光明的和別人進行通訊了
(2)網絡通訊流程
arp協議功能:廣播的方式發送數據包,獲取目標主機的mac地址
流程:
第一步:打開瀏覽器,想要請求訪問京東,在地址欄輸入了網址:www.jd.com。(www.jd.com是域名就是一個IP地址的名稱,IP地址很差記,全部有了域名。)
第二步:先將請求信息發給了交換機,而後交給了路由器,路由發給DNS服務器,經過DNS協議去找咱們要訪問的京東的IP地址:
第三步:查到的京東服務器對應的IP地址以後,路由器經過路由協議找到一個路由轉發的最優路徑,將你的請求信息還送給這個IP地址的京東的路由器
第四步:京東的路由器發給了京東網站的服務器上
第五步:京東網站服務器按照來的時候的路徑,在返回給你他本身的網站
第六步:當你打開瀏覽器的時候,你的電腦給你的瀏覽器這個運行起來的程序給了一個編號,叫作端口號,當你的電腦收到京東發送過來的消息的時候,你的電腦經過端口號找到你的瀏覽器,你的瀏覽器拿到了京東的網站信息,而後將網站呈如今了本身的瀏覽器上
(3) 內網和外網
實際上,從規模上來看咱們很難分辨局域網與廣域網,由於大小都是相對的。因此。真正局域網與廣域網的分別是經過IP地址來實現的。
任何一臺電腦要上網,都必須在網絡上有一個惟一的IP地址。在局域網內,這個IP地址是惟一的。可是在另一個局域網,這個IP地址仍然可以使用。(網絡A裏有一臺IP地址爲192.168.1.231的客戶端,網絡B裏也能夠有一臺一樣IP的電腦。那麼。咱們就說這2臺機器分別在2個局域網裏。可是在廣域網內,全部的IP地址都是惟一的,不可重複)
若是隻有內網的ip地址你是不能上網的,你上網確定要經過一個外網地址,這個外網地址又稱爲公網地址,這個公網地址是全球惟一的,他在你的對外出口的路由器上,也就是你的外網網關地址
3.DNS服務器
4.交換機,路由器和網關(含DHCP)
(1)網關
那麼網關究竟是什麼呢?網關實質上是一個網絡通向其餘網絡的IP地址。好比有網絡A和網絡B,網絡A的IP地址範圍爲 「192.168.1.1~192. 168.1.254」,子網掩碼爲255.255.255.0;網絡B的IP地址範圍爲「192.168.2.1~192.168.2.254」,子網掩碼爲255.255.255.0。在沒有路由器的狀況下,兩個網絡之間是不能進行TCP/IP通訊的,即便是兩個網絡鏈接在同一臺交換機(或集線器)上, TCP/IP協議也會根據子網掩碼(255.255.255.0)斷定兩個網絡中的主機處在不一樣的網絡裏。而要實現這兩個網絡之間的通訊,則必須經過網關。若是網絡A中的主機發現數據包的目的主機不在本地網絡中,就把數據包轉發給它本身的網關,再由網關轉發給網絡B的網關,網絡B的網關再轉發給網絡B的某個主機。網絡B向網絡A轉發數據包的過程也是如此。
(2)路由器&交換機
路由器對外部網絡的通訊都是經過外網接口(wan口)去轉發出去的,也就是無論你是內網中的哪一個電腦,你的請求都要經過路由的外網接口發送出去,別人對你的請求都是經過外網接口接收進來的,
至於路由器上對內的lan口是怎麼分配IP地址給內網的,要看路由器怎麼設置劃分vlan也就是子網(內部局域網),每一個lan口的IP地址能夠是靜態的,也能夠是動態分配的(DHCP協議),並且能夠劃分網段,例如:個人1號lan口對接的網段是192.168.1.0-192.168.1.255,那麼全部這個網段的電腦的信息進出都走這個lan口到路由器上,對於鏈接路由器的交換機來說,主要的做用就是搭橋用的,搭橋的意思就是讓鏈接該交換機的全部電腦都可以鏈接起來,只要是同一個網段的互相均可以進行通訊,固然這個也要看交換機怎麼配置,
(3)DHCP
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個局域網的網絡協議,使用UDP協議工做, 主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員做爲對全部計算機做中央管理的手段 交換機又分二層交換機和三層交換機,二層交換機主要就是個搭橋的做用,三層交換機還兼有路由的做用,通常如今的交換機都有DHCP功能,也就是說交換機下面鏈接的這些電腦的子網IP或者說是局域網IP也能夠由交換機來動態生成和分配,路由器和交換機所生成的子網IP都是本身在路由器和交換機上設置的,和路由器上的外網IP沒有關係,具體的劃分又分爲24位的16位的等等,舉例:24位的就是10.11.1.0-10.11.1.255這256個IP地址,0表示後面的8bit是00000000,255表示後面的8bit是11111111
5.初識socket
#編寫服務端 import socket #建立一個socket對象 server = socket.socket() #建立一個手機 ip_port =("192.168.15.51",8900) #綁定ip地址和端口 server.bind(ip_port) #監聽ip地址和端口 server.listen() print("等待中...0101") #等待客戶端的鏈接 conn,addr = server.accept() #阻塞住 #接受消息 from_client_msg = conn.recv(1024) #接收的消息是bytes類型,須要轉換爲字符串 print(from_client_msg.decode("utf-8")) conn.send("蓋澆飯".encode("utf-8")) conn.close() server.close()
#編寫客戶端 import socket client = socket.socket() server_ip_port = ("192.168.15.51",8900) #鏈接服務端 client.connect(server_ip_port) #發消息 client.send("中午吃啥".encode("utf-8")) #send裏的消息必須是字節類型 from_server_msg = client.recv(1024) print(from_server_msg.decode("utf-8")) #關閉鏈接 client.close()
交互式的應答:
#編寫服務端 import socket server = socket.socket() ip_port = ("192.168.15.51",8900) server.bind(ip_port) server.listen() print("等待消息中...0101") conn , addr = server.accept() #等待客戶鏈接 #能夠接收消息 while 1: from_client_msg = conn.recv(1024) print(from_client_msg.decode("utf-8")) msg = input("客服:") conn.send(msg.encode("utf-8")) conn.close() server.close()
#編寫服務端 import socket client = socket.socket() server_ip_port = ("192.168.15.51",8900) client.connect(server_ip_port) #發消息 while 1: msg = input("客戶留言:") client.send(msg.encode("utf-8")) from_server_msg = client.recv(1024) print(from_server_msg.decode("utf-8")) client.close()
練習題