計算機原理網絡
互聯網協議socket
計算機原理spa
機器數與真值翻譯
一個數在計算機中的二進制表示,叫作這個數的機器數。3d
機器數是帶符號的,在計算機用一個數的最高位存放符號,正數爲0,負數爲1.blog
好比,十進制中的數 +3,計算機字長爲8,轉換成二進制就是00000011。若是是-3,就是10000011。這裏的00000011和10000011就是機器數接口
真值:將帶符號位的機器數對應的真正數值稱爲機器的真值。進程
00000001的真值爲 +00000001 = +1ip
10000011的真值爲 -00000001= -1基礎
原碼、反碼、補碼
人們爲了將符號位參與運算,而且只保留加法,從而簡化計算機運算,發明了原碼,反碼和補碼。
原碼,反碼和補碼都是有符號的用二進制表示數的方法,均由符號位和數值位構成。
1.原碼:
原碼是符號位上真值的絕對值,即用第一表示符號位,其他位表示值,好比若是是8位二進制:
【+1】原碼爲 0000 0001 【-1】原碼爲 1000 0001
第一位是符號位,餘下7位是數值位。由於第一位是符號位,因此8位二進制數的取值範圍就是:
[11111111,01111111]便是 【-127,+127】
2.反碼:
反碼的表示方法爲:
正數的反碼是其自己;
負數的反碼是在其原碼的基礎上,符號位不變,其他各個位取反。
【+1】原碼爲[0000 0001] 反碼爲 0111 1110
【-1】 原碼爲[1000 0001] 反碼爲 1111 1110
3.補碼:
補碼的表示方法爲:
正數的補碼是其自己,
負數的補碼是其原碼的基礎上,符號位不變,其他各位取反,最後+1,(即在反碼的基礎上+1)
【+1】原碼爲[0000 0001] 反碼爲 0111 1110 補碼爲 0111 1111
【-1】 原碼爲[1000 0001] 反碼爲 1111 1110 補碼爲 1111 1110
補碼的絕對值:
-65的補碼是 10111111
若直接將10111111轉換成十進制,發現結果並非-65,而是191。
事實上,在計算機內,若是是一個二進制數,其最左邊的位是1,則咱們能夠斷定它位負數,而且是用補碼錶示,若要獲得一個負二進制補碼的數值,
只要對補碼所有取反並加1,就可獲得其數值。
如:二進制值:10111111(-65的補碼)
各位取反:01000000 加1: 01000001(+65)
在計算機系統中,數值一概用補碼來表示和存儲。緣由在於,使用補碼,能夠將符號位和數值域統一處理;同時,加法和減法也能夠統一處理。
此外,補碼與原碼相互轉換,其運算過程是相同的,不須要額外的硬件電路。
0000 0011
1000 0011
1111 1101
正數的補碼是他自己
負數的補碼是 反碼(保留符號位,其他位數取反),而後最後一位加+1。也就是說 好比 數字3 它的正數補碼,加上,負數補碼,恰好是 0
從而把減法的運算轉換成了加法的運算
互聯網協議
物理層: 物理層功能:主要是基於電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0
數據鏈路層:數據鏈路層由來:單純的電信號0和1沒有任何意義,必須規定電信號多少位一組,每組什麼意思
數據鏈路層的功能:定義了電信號的分組方式
以太網協議:
早期的時候各個公司都有本身的分組方式,後來造成了統一的標準,即以太網協議ethernet
ethernet規定
一組電信號構成一個數據包,叫作‘幀’
每一數據幀分紅:報頭head和數據data兩部分
head包含:(固定18個字節)
發送者/源地址,6個字節
接收者/目標地址,6個字節
數據類型,6個字節
data包含:(最短46字節,最長1500字節)
數據包的具體內容
head長度+data長度=最短64字節,最長1518字節,超過最大限制就分片發送
mac地址:
head中包含的源和目標地址由來:ethernet規定接入internet的設備都必須具有網卡,發送端和接收端的地址即是指網卡的地址,即mac地址
mac地址:每塊網卡出廠時都被燒製上一個世界惟一的mac地址,長度爲48位2進制,一般由12位16進制數表示(前六位是廠商編號,後六位是流水線號)
網絡層:
網絡層功能:引入一套新的地址用來區分不一樣的廣播域/子網,這套地址即網絡地址,IP地址。經過子網掩碼判斷是否處於同一個局域網。
arp協議:
可是在以太網協議中,發送信息,須要事先知道目標mac地址,此時就經過arp協議獲取:
傳輸層:
傳輸層的由來:網絡層的ip幫咱們區分子網,以太網層的mac幫咱們找到主機,而後你們使用的都是應用程序,你的電腦上可能同時開啓qq,暴風影音,等多個應用程序,
那麼咱們經過ip和mac找到了一臺特定的主機,如何標識這臺主機上的應用程序,答案就是端口,端口即應用程序與網卡關聯的編號。
傳輸層功能:創建端口到端口的通訊
socket:
咱們常常把socket翻譯爲套接字,socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操做抽象爲幾個簡單的接口供應用層調用以實現進程在網絡中通訊。
咱們在理解網絡傳輸的時候,是從物理層開始理解從直到應用層,
可是若是咱們在使用應用程序時候,應用程序發出的信息,要從應用層一層層解析,最後變爲物理層的電信號進行傳輸。