網絡基礎(3)
有關進程
1)進程是人在系統中的代表,只要把數據給進程,人就相當于拿到了數據
2)數據傳輸到主機不是目的,而是手段。到達主機內部,再交給主機內的進程才是目的
上網的行為只有兩種:1)從遠端服務器獲取數據
? 2)本地數據,上傳到遠端服務器
**網絡通信的本質:**兩個不同主機的進程在進行數據交互,也就是進程間通信,讓不同的進程看到同一份資源
這時候就會產生一個問題:
在系統中,同時會存在非常多的進程,當數據到達目標主機之后,怎么轉發給目標進程?
在系統中,標識主機的唯一性
端口號
定義:(port)傳輸層協議的內容
1)端口號是一個2字節16位的整數
2)端口號可以用來標識系統中唯一的一個網絡進程
端口號VS pid
1)不是所有的進程都要進行網絡通信
2)從技術角度,pid是可行的,但是pid是一個系統的概念,pid變化,網絡也要隨之變化,這就是解耦
怎樣標識對方的唯一性:socket=ip+port
TCP(可靠)VS UDP(不可靠)
TCP:做更多的工作,復雜,占用更多資源
UDP:很簡單
網絡協議必須采用大端字節序,即低地址高字節
凡是發送到網絡中的數據,必須是大端
大小端都是以字節為單位的
先發出的數據是低地址,后發出的數據是高地址
將0x1234abcd寫入到以0x0000開始的內存中,結果為
大端 | 小端 | |
---|---|---|
0x0000 | 0x12 | 0xcd |
0x0001 | 0x34 | 0xab |
0x0002 | 0xab | 0x34 |
0x0003 | 0xcd | 0x12 |
網絡通信的本質:進程間通信
system V:本地進程間通信
posix標準:網絡通信,進程通信