ftp(file transfer protocol)是乙個非常古老並且應用十分廣泛的檔案傳輸協議,ftp協議是現今使用最為廣泛的網路檔案共享協議之一,我們現在也一直有在用著ftp協議來進行各種檔案的傳輸,ftp為我們提供了一種可靠的方式在網路上進行檔案的共享
ftp是c/s架構的服務,擁有乙個伺服器端和乙個客戶端,ftp底層通過tcp協議來作為傳輸協議,所以ftp協議是一種可靠的檔案傳輸方式,ftp提供了兩個埠號,20和21號埠,20號是資料介面,提供資料之間的傳輸,21號是命令介面,提供命令之間的傳輸
ftp服務端與客戶端連線一般有兩種模式:主動模式(active mode)和被動模式(passive mode)
主動模式原理圖
主動模式下,客戶端首先會向伺服器端的21號埠發出乙個連線命令,請求與伺服器端建立連線,此時伺服器端響應回去給客戶端,並要求客戶端傳送乙個用於傳送資料的埠,該埠號要 > 1023 ,此時伺服器端的20號埠就會與該資料埠主動建立連線,客戶端與伺服器端進行資料的傳送
被動模式的原理如下圖所示
與主動模式不同的是,在被動模式下,客戶端也是首先與伺服器端的21埠建立連線,此時伺服器端會開啟乙個 > 1023 號的資料傳送埠,並返回給客戶端,這個時候客戶端也會開啟乙個 > 1023 的埠,然後客戶端會主動的去跟伺服器端的資料傳輸埠建立連線,兩者之間來進行資料的傳送輸
所以說,主動模式與被動模式的區別就在於究竟是伺服器端的20埠主動發起於客戶端建立連線,還是伺服器端開放乙個隨機埠,等待客戶端與其主動建立連線。在我們的生產環境中,通常還是使用的是被動連線的模式,因為我們的伺服器端都有配置防火牆,而防火牆對於內網連線外網的埠一般是放行的,而外網來連線內網的埠則一般是有限制的,所以我們這時如果使用主動模式連線的話,埠可能被防火牆攔截,從而不能提供我們的ftp服務
掌握原理一切就好辦
Qt中QMutex的一點理解
在qt的多執行緒控制中,互斥量的訪問最簡單的控制是新增乙個mutex鎖,對乙個函式或者變數鎖定。一直不理解qmutex中的鎖是如何執行的,或者說如何利用這個鎖將變數進行鎖定。官方例項是這樣的 1 qmutex mutex 2 int number 6 34 void method1 5 11 12 ...
UIWebView 的一點理解
uiwebview可以用來方便得顯示url request uiwebview 是從uiview繼承而來的。所以本身並沒有實現scroll。當開啟乙個urlrequest之後,uiwebview 自動建立乙個uiscrollview add 到uiwebview的layer 當開啟當前頁面中的lin...
QThread的一點理解
白天在工作中用到的qthread,發現了一些問題,晚上學習了一下,感觸頗深,遂記錄一下 嘻嘻 1 qthread exec 如果不在run 中最後一行寫出來,普通訊號槽可以用,但是qtimer或qtcpsocket或程序類qprocess的訊號槽不能用!2 在標頭檔案裡定義的類,是屬於主線程的。比如...