首先呢,一臺電腦想要上網,必需要有四個參數:自身的IP地址、子網掩碼、網關的地址、DNS服務器的地址。咱們能夠靜態手動配置這四個參數,但這樣會致使框死了,不夠靈活。所以,可經過DHCP協議動態獲得自身的IP地址和其餘的三個參數。好了,如今四個參數都有了,再看一下怎麼通訊的。好比在瀏覽器輸入一個域名,咱們經過DNS協議能夠獲得該域名的IP地址。這個IP地址有什麼用呢?主要是比較本機與域名主機是否是處在一個子網絡。這裏要用到子網掩碼,把本機的IP地址和域名的IP地址分別和子網掩碼進行AND運算,結果相贊成思就是處在一個子網絡,結果不一樣意思就是不處在一個子網絡,主機的數據包想要發送到域名主機,須要經過網關轉發。假如本機和域名主機處在一個子網絡,是怎麼通訊的呢?兩臺主機之間想要實現通訊,須要IP地址和MAC地址。這時候咱們已經知道了域名主機的IP地址,MAC地址須要經過網絡層的ARP協議來獲取。那怎麼經過ARP協議來獲取到域名主機的MAC地址呢?ARP協議發出一個數據包,此時是處於網絡層,要給標頭加上本機IP地址和域名主機IP地址(這二者如今是已知的),以後傳到數據鏈路層,數據鏈路層的做用是給這個數據包加上MAC地址,這裏就用到「廣播」的方式,本機的MAC地址是已知的,接受者的MAC的地址咱們就寫成FF:FF:FF:FF:FF:FF,這表示是一個廣播地址,與本機在同一個子網絡的全部主機都會收到這個包,而後它們會取出這個包裏面的IP地址來跟自身的IP地址進行比對,若是同樣,就會作出迴應,報告本身的MAC地址,不然就丟棄這個包。那麼如今,在咱們有了MAC地址後,又該怎麼具體實現通訊呢?本機在通過傳輸層、網絡層、數據鏈路層分別給標頭加上端口號、IP地址、MAC地址後造成一個以太網數據包,再通過物理層(物理層主要是負責傳送0、1的電信號),傳送到所在子網絡的每個主機,主機把數據包裏的MAC地址和自身的MAC地址進行比對,若是相同,就接受這個包進行進一步的處理,否則就丟棄。瀏覽器
說到這裏,再來講一下,假如本機IP地址和域名主機IP地址不在一個子網絡又是怎樣?在前面所說必須知道的四個參數裏有一個是網關的IP地址,這個時候就派上用場了。一樣地,咱們經過ARP協議能夠獲得所在網關的MAC地址。而後本機發出數據包時,最後造成的以太網數據包是發往本機所在的網關A,網關A再經過路由協議,經過網關轉發,轉發到域名主機所在的網關B,最後到達域名主機,進行進一步處理。 但在進行真正地傳輸數據以前,咱們先要進行TCP鏈接,進行三次握手,這個時候傳送的包裏是不包含的數據的,咱們僅僅是爲了確認是否能讓數據可靠地進行傳輸。在三次握手後,纔開始真正傳輸數據,此時開始進行http鏈接,服務器端接受到帶有數據的數據包,開始進行上文所說地「進一步處理」。首先根據數據包IP標頭的序號,將數據包從新拼合起來,讀出裏面的http請求,再作出http相應,經過tcp協議發回來。本機收到http響應後,可將網頁內容渲染出來。服務器
想要斷開鏈接則進行四次揮手。網絡