通訊的學習是從寫伺服器開始的,之後加上客戶端,然後實現兩個之間的訊息傳送,這其實是基於tcp/ip的協議的通訊,跟之前看到的udp協議不同,是一種面向連線,需要通訊雙方建立連線並確認後才能實現資料的傳輸。這樣的話,tcp的資料傳輸比udp更安全可靠。
面向連線的傳輸是以兩個主機間的握手開始的,乙個主機傳送到另乙個主機間的握手有三個作用:
1.確保目的主機可用;
2.確保目的主機正在偵聽目標埠號;
3.通知給目的主機發出者的序號,使雙方在傳輸資料時可以進行跟蹤。
tcp/ip是在通訊雙方建立連線後,把要傳輸的資料轉換為位元組流,但是位元組流不能分辨出訊息部分和非訊息部分,所以接收方在接收到位元組流後,需要按照tcp/ip協議把位元組流再翻譯成為訊息。
在客戶端和伺服器之間的資料傳輸前,需要「三次握手」來實現。
1.建立連線時,客戶機a向伺服器b傳送syn包(syn=j),並進入到syn_send(請求連線)狀態,等待伺服器b確認;
2.伺服器b收到syn包,必須確認客戶a的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器b進入syn_recv狀態;
3.客戶端a收到伺服器b的syn+ack包,向伺服器b傳送確認包ack(ack=k+1),客戶端a和伺服器b進入established(連線成功)狀態,三次握手完成。
三次握手即三步:請求—確認—再確認的過程,握手完成後客戶端和伺服器開始傳輸資料。
結束通訊時,需要進行「四次斷開」。
1.客戶端a傳送乙個fin,用來關閉客戶a到伺服器b的資料傳送(報文段4)。
2.伺服器b收到這個fin,它發回乙個ack,確認序號為收到的序號加1(報文段5)。
3.伺服器b關閉與客戶端a的連線,傳送乙個fin給客戶端a(報文段6)。
4.客戶端a發回ack報文確認,並將確認序號設定為收到序號加1(報文段7)。
斷開的四個步驟其實就是通訊雙方互相給對方傳送「斷開」的請求,然後互相確認的過程,但是由於是全雙工,所以在斷開時需要四步,若只有一方斷開,則通訊並不能完全結束,另一方仍能傳送訊息。
根據tcp/ip的三次握手,四次斷開的過程分析,可以更好的理解了面向連線協議的特點,需要通訊雙方的互相確認,並且能根據序號對資料進行跟蹤,所以很好地保護了資料的安全傳輸。
第一次飛行
開始敲下這段話時,窗外下面正是一片片陽光照耀著的白雲,伴隨著張學友的歌聲,心潮起伏.雖然從初中起,我就經常乙個人坐著火車,汽車東奔西跑,坐飛機卻是第一次.早上上飛機前,心裡忐忑,必竟還是踏在陸地上踏實.但上了飛機後注意力就放在其它地方上去了,而且,運氣好的是我有乙個靠窗的位置.飛機準備起飛了,助跑加...
第一次面試
話說3月4號學院召開實習動員大會並有三家公司過來進行宣講會,分別是國家體育總局亞運專案組,金蝶和華際友天,由此開始了實習生涯。周五的傍晚,正吃著飯的時候突然收到簡訊通知,金蝶週六上午10點有個面試。當晚就瀏覽著些簡歷製作相關的網頁,為第二天做準備,總以為,簡歷弄得可以了,然後每太留意去完善 後來才知...
第一次哭泣
第一次來到南方 沒有朋友 沒有親人 乙個從沒有出過門的乙個女孩子 為了工作 學習c 在這碰到了乙個很好的老師 當老師控制我的機器時 或者給我講題時 我都是很感動的 幾乎是每天都有問題 形成了依賴 以前他說不要一有問題就舉手問 我依然問 就算我不問他也會控制我的機器 看看我在做什麼 或者有什麼錯誤 現...