Socket與TCP、UDP

來源:互聯網
上載者:User

對於TCP協議我不想說太多東西,這屬於大學課程,又涉及電腦科學,而我不是“學院派”,對於這部分內容,我覺得作為開發人員,只需要掌握與程式相關的概念就可以了,不需要做太艱深的研究。

我們首Crowdsourced Security Testing道TCP是連線導向的,它的意思是說兩個遠程主機(或者叫進程,因為實際上遠程通訊是進程之間的通訊,而進程則是運行中的程式),必須首先進行一個握手過程,確認串連成功,之後才能傳輸實際的資料。比如說進程A想將字串“It's a fine day today”發給進程B,它首先要建立串連。在這一過程中,它首先需要知道進程B的位置(主機地址和連接埠號碼)。隨後發送一個不包含實際資料的請求報文,我們可以將這個報文稱之為“hello”。如果進程B接收到了這個“hello”,就向進程A回複一個“hello”,進程A隨後才發送實際的資料“It's
a fine day today”。

關於TCP第二個需要瞭解的,就是它是全雙工系統的。意思是說如果兩個主機上的進程(比如進程A、進程B),一旦建立好串連,那麼資料就既可以由A流向B,也可以由B流向A。除此以外,它還是點對點的,意思是說一個TCP串連總是兩者之間的,在發送中,通過一個串連將資料發給多個接收方是不可能的。TCP還有一個特性,就是稱為可靠的資料轉送,意思是串連建立後,資料的發送一定能夠到達,並且是有序的,就是說發的時候你發了ABC,那麼收的一方收到的也一定是ABC,而不會是BCA或者別的什麼。

編程中與TCP相關的最重要的一個概念就是通訊端。我們應該知道網路七層協議,如果我們將上面的應用程、展示層、會話層籠統地算作一層(有的教材便是如此劃分的),那麼我們編寫的網路應用程式就位於應用程式層,而大家知道TCP是屬於傳輸層的協議,那麼我們在應用程式層如何使用傳輸層的服務呢(訊息發送或者檔案上傳下載)?大家知道在應用程式中我們用介面來分離實現,在應用程式層和傳輸層之間,則是使用通訊端來進行分離。它就像是傳輸層為應用程式層開的一個小口,應用程式通過這個小口向遠程發送資料,或者接收遠程發來的資料;而這個小口以內,也就是資料進入這個口之後,或者資料從這個口出來之前,我們是不知道也不需要知道的,我們也不會關心它如何傳輸,這屬於網路其它層次的工作。

舉個例子,如果你想寫封郵件發給遠方的朋友,那麼你如何寫信、將信打包,屬於應用程式層,信怎麼寫,怎麼打包完全由我們做主;而當我們將信投入郵筒時,郵筒的那個口就是通訊端,在進入通訊端之後,就是傳輸層、網路層等(郵局、公路交管或者航線等)其它層次的工作了。我們從來不會去關心信是如何從西安發往北京的,我們只知道寫好了投入郵筒就OK了。可以用下面這兩幅圖來表示它:

注意在上面圖中,兩個主機是對等的,但是按照約定,我們將發起請求的一方稱為用戶端,將另一端稱為服務端。可以看出兩個程式之間的對話是通過通訊端這個出入口來完成的,實際上通訊端包含的最重要的也就是兩個資訊:串連至遠端本地的連接埠資訊(本機地址和連接埠號碼),串連到的遠端連接埠資訊(遠程地址和連接埠號碼)。注意上面詞語的微妙變化,一個是本地地址,一個是遠程地址。

這裡又出現了了一個名詞連接埠。一般來說我們的電腦上運行著非常多的應用程式,它們可能都需要同遠程主機打交道,所以遠程主機就需要有一個ID來標識它想與本地機器上的哪個應用程式打交道,這裡的ID就是連接埠。將連接埠分配給一個應用程式,那麼來自這個連接埠的資料則總是針對這個應用程式的。有這樣一個很好的例子:可以將主機地址想象為電話號碼,而將連接埠號碼想象為分機號。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.