网络基础相关知识内容
day29
1.網絡基礎相關的知識
1.1 架構
1.1.1? C/S 架構 ? 服務器/客戶端
優勢:能夠充分發揮PC機的性能
1.1.2? B/S 架構? 服務器/瀏覽器 (隸屬于C/S架構)
優勢: 統一了應用的接口?
1.2 通信的事
1.2.1? 同一臺計算機上兩個py 程序通信,打開一個文件
1.2.2? 兩個電腦通信,連接一根網線
1.2.3? 多態電腦通信
eg: 電腦1 想要找到電腦2通信.
通信過程: 電腦1發送一個請求幀(包含目標主機的ip地址,還有本主機的ip地址和物理mac地址)給交換機,交換機會廣播(吼一嗓子),當主機2收到交換機的廣播后,知道有主機要尋找主機2,主機2會給交換機一個回應,此時交換機就會告訴主機1,主機2找到了,此時主機1和主機2就可以互相通信了.
2.知識點
2.1? mac地址:是一個物理地址,全球唯一的,是由網卡制造商分配的,類似于人的身份證
2.2? IP地址:是一個四位點分十進制,它表示了計算機在網絡中的位置,類似于學生在學校的學號.
2.3? 交換機的通信方式:
廣播:? 反射狀信息(吼一嗓子)
單播: 一對一通信
組播: 一個和多個通信
2.4 arp協議 : 通過目標IP地址來獲取mac地址的一個協議
2.5? 端口:操作系統為本機上的每一個運行的程序隨機分配的一個端口(程序級別的端口),其他電腦上的程序可以通過端口獲取到這個程序(類似于文件句柄),IP地址+端口 能夠找到某一臺電腦上的某一個服務程序
2.6? 路由器:鏈接不同網段,路由選路
2.7? 網關: 一個網段的出口和入口
2.8? 網段: 一個局域網內的IP地址范圍
2.9? 子網掩碼: 子網掩碼和IP地址&可以得到網段
2.10? osi五層結構
引用層 ? ? ? ? ? ? ? ? ? ? ? http/htpps/ftp?
傳輸層 ? ? ? ? ? ? ? ? ? ? tcp/udp ? ? ? ? ? ? ? ? ? ? ? ? ?? 四層交換機/四層路由器
網絡層 IP協議 路由器/三層交換機
數據鏈路層 ARP協議 以太網交換機/網卡/網橋
物理層 傳輸電信號 網線/光線/集線器
3.socket 模塊(套接字)
socket又叫做套接字,有很多種類型
3.1? AF_UNIX基于文件類型的套接字,unix的中心思想就是: 一切皆文件
3.2? AF_INET基于網絡類型的套接字
type:一種是基于TCP協議 ? SOCK_STREAM
一種是基于UDP協議 ? SOCK_SYREM
TCP協議:可靠的,面向連接的,面向字節流形式的傳輸方式
UDP協議:不可靠的,面向無連接,面向數據包傳輸.傳輸速度相對要快
4.client和service代碼
server服務端:
import socket
sk = socket.socket()...............................括號里不用傳參數,默認是基于網絡型的套接字,協議:TPC(好比買了一部手機)
sk.bind(("192.168.12.37",8008)).....................買一張手機卡(里邊以元組的形式包括IP地址,端口,的端口的范圍是:0-65535,但是0-1023i操作系統用的,不要用,所以的端口的數字在范圍內可以隨便給)
sk.listen()...........不用傳參數,表示同時能接收的連接(相當于開機)
conn,addr = sk.accept().............................等待接收客戶端的連接,是一種阻塞等待(相當于等待開機)
while 1:
mas_c = conn.resv(1024)...................建立起聯系然后接收客戶端發送的消息(conn里邊包括客戶端的消息)括號里必須給一個參數是字節數的倍數這個數盡量大一點,保證一次都接收完
print("mas_c".decode("utf-8"),addr)
massage = input(">>>")
conn.send(massage.encode("utf-8"))
conn.close()
sk.close()
client客戶端
import socket
sk = socket.socket().....................................建立通信的條件
sk.connect(("192.168.12.37",8008))...........................和要通信的主機連接
while 1:
mass = input(">>>")
sk.send(mass.encode("utf-8"))
mas_c = sk.resv(1024)
print(mas_c.decode("utf-8"))
sk.close()
?
轉載于:https://www.cnblogs.com/kcwxx/p/9506752.html
總結
以上是生活随笔為你收集整理的网络基础相关知识内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Laravel 引入自定义类库或第三方类
- 下一篇: 【JavaScript】核心语法之数组