[网络] SOCKET, TCP/UDP, HTTP, FTP
(一)TCP/UDP,SOCKET,HTTP,FTP簡析
| TCP/IP是個協議組,可分為三個層次:網絡層、傳輸層和應用層: 網絡層:IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議 傳輸層:TCP協議與UDP協議 應用層:FTP、HTTP、TELNET、SMTP、DNS等協議 SOCKET是實現傳輸層協議的一種編程API,能夠是TCP。也能夠是UDP。 (二)Socket連接與HTTP連接差別【Socket】 ????因為通常情況下Socket連接就是TCP連接,因此Socket連接一旦建立。通信兩方就可以開始相互發(fā)送數據內容。直到兩方連接斷開。但在實際網絡應用中,client到server之間的通信往往須要穿越多個中間節(jié)點。比如路由器、網關、防火墻等,大部分防火墻默認會關閉長時間處于非活躍狀態(tài)的連接而導致 Socket 連接斷連,因此須要通過輪詢告訴網絡,該連接處于活躍狀態(tài)。 【Http】 ????HTTP協議是建立在TCP協議之上的一種應用。HTTP連接使用的是“請求—響應”的方式,不僅在請求時須要先建立連接,并且須要client向server發(fā)出請求后,server端才干回復數據。在請求結束后,會主動釋放連接。從建立連接到關閉連接的過程稱為“一次連接”。 因為HTTP在每次請求結束后都會主動釋放連接。因此HTTP連接是一種“短連接”,要保持client程序的在線狀態(tài),須要不斷地向server發(fā)起連接請求。通常的做法是即時不須要獲得不論什么數據,client也保持每隔一段固定的時間向server發(fā)送一次“保持連接”的請求,server在收到該請求后對client進行回復,表明知道client“在線”。若server長時間無法收到client的請求,則覺得client“下線”,若client長時間無法收到server的回復。則覺得網絡已經斷開。 HTTP協議是建立在請求/響應模型上的。首先由客戶建立一條與server的TCP鏈接,并發(fā)送一個請求到server。請求中包括請求方法、URI、協議版本號以及相關的MIME樣式的消息。 server響應一個狀態(tài)行,包括消息的協議版本號、一個成功和失敗碼以及相關的MIME式樣的消息。 【適用情況】 ????非常多情況下。須要server端主動向client推送數據,保持client與server數據的實時與同步。此時若兩方建立的是Socket連接。server就能夠直接將數據傳送給client; ????若兩方建立的是HTTP連接。則server須要等到client發(fā)送一次請求后才干將數據傳回給client,因此,client定時向server端發(fā)送連接請求。不僅能夠保持在線,同一時候也是在“詢問”server是否有新的數據,假設有就將數據傳給client。 【SOCKET原理】 ???(1)套接字(socket)概念: 套接字(socket)是通信的基石。是支持TCP/IP協議的網絡通信的基本操作單元。 它是網絡通信過程中端點的抽象表示。包括進行網絡通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議port,遠地主機的IP地址。遠地進程的協議port。 應用層通過傳輸層進行數據通信時,TCP會遇到同一時候為多個應用程序進程提供并發(fā)服務的問題。 多個TCP連接或多個應用程序進程可能須要通過同一個?TCP協議port數據傳輸。 為了差別不同的應用程序進程和連接,很多計算機操作系統為應用程序與TCP/IP協議交互提供了套接字(Socket)接口。 應用層能夠和傳輸層通過Socket接口,區(qū)分來自不同應用程序進程或網絡連接的通信,實現數據傳輸的并發(fā)服務。 (2)建立socket連接: 建立Socket連接至少須要一對套接字。當中一個執(zhí)行于client,稱為ClientSocket?,還有一個執(zhí)行于server端,稱為ServerSocket?。 套接字之間的連接過程分為三個步驟:server監(jiān)聽。client請求。連接確認。 server監(jiān)聽:server端套接字并不定位詳細的client套接字,而是處于等待連接的狀態(tài)。實時監(jiān)控網絡狀態(tài),等待client的連接請求? client請求:指client的套接字提出連接請求。要連接的目標是server端的套接字。 為此,client的套接字必須首先描寫敘述它要連接的server的套接字,指出server端套接字的地址和port號。然后就向server端套接字提出連接請求。 連接確認:當server端套接字監(jiān)聽到或者說接收到client套接字的連接請求時。就響應client套接字的請求。建立一個新的線程,把server端套接字的描寫敘述發(fā)給client,一旦client確認了此描寫敘述,兩方就正式建立連接。而server端套接字繼續(xù)處于監(jiān)聽狀態(tài)。繼續(xù)接收其它client套接字的連接請求。 (3)SOCKET連接與TCP連接 創(chuàng)建Socket連接時。能夠指定使用的傳輸層協議,Socket能夠支持不同的傳輸層協議(TCP或UDP)。當使用TCP協議進行連接時,該Socket連接就是一個TCP連接。 (三)TCP 與 UDP?【概念】 ???TCP --- 傳輸控制協議,提供的是面向連接、可靠的字節(jié)流服務。當客戶和server彼此交換數據前,必須先在兩方之間建立一個TCP連接,之后才干數據傳輸。TCP提供超時重發(fā),丟棄反復數據,檢驗數據,流量控制等功能,保證數據能從一端傳到還有一端。?理想狀態(tài)下,TCP連接一旦建立,在通信兩方中的不論什么一方主動關閉連接前,TCP?連接都將被一直保持下去。斷開連接時server和client均能夠主動發(fā)起斷開TCP連接的請求 ???UDP --- 用戶數據報協議,是一個無連接的簡單的面向數據報的運輸層協議。UDP不提供可靠性,它僅僅是把應用程序傳給IP層的數據報發(fā)送出去,可是并不能保證它們能到達目的地。因為UDP在數據傳輸報前不用在客戶和server之間建立一個連接,且沒有超時重發(fā)等機制,故而傳輸速度非常快? 【適用情況】 ????TCP發(fā)送的包有序號,對方收到包后要給一個反饋,假設超過一定時間還沒收到反饋就自己主動運行超時重發(fā)。因此TCP最大的長處是可靠。一般網頁(http)、郵件(SMTP)、遠程連接(Telnet)、文件(FTP)傳送就用TCP? ????UDP是面向消息的協議,通信時不須要建立連接,數據的傳輸自然是不可靠的,UDP一般用于多點通信和實時的數據業(yè)務,比方語音廣播、視頻、QQ、TFTP(簡單文件傳送)、SNMP(簡單網絡管理協議)、RTP(實時傳送協議)RIP(路由信息協議,如報告股票市場,航空信息)、DNS(域名解釋)。注重速度流暢。? 【TCP連接的三次握手】 ????要了解TCP。一定要知道"三次握手,四次拜拜"所謂的三次握手,就是發(fā)送數據前必須建立的連接叫三次握手。握手完了才開始發(fā)的,這也就是面向連接的意思。? ????第一次握手:client發(fā)送syn包(syn=j)到server。并進入SYN_SEND狀態(tài)。等待server確認;第二次握手:server收到syn包,必須確認客戶的SYN(ack=j+1),同一時候自己也發(fā)送一個SYN包(syn=k),????????????????即SYN+ACK包,此時server進入SYN_RECV狀態(tài)。第三次握手:client收到server的SYN+ACK包。向server發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢。client ???????????????和server進入ESTABLISHED狀態(tài),完畢三次握手。 ???(四)FTP?????文件傳輸協議(File Transfer Protocol, FTP)是TCP/IP網絡上兩臺計算機傳送文件的協議,FTP是在TCP/IP網絡和INTERNET上最早使用的協議之中的一個,它屬于網絡協議組的應用層。FTP客戶機能夠給server發(fā)出命令來下載文件。上載文件。創(chuàng)建或改變server上的文件夾。 |
轉載于:https://www.cnblogs.com/blfbuaa/p/6745222.html
總結
以上是生活随笔為你收集整理的[网络] SOCKET, TCP/UDP, HTTP, FTP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: haproxy 同一域名下分发请求
- 下一篇: 我的HTML学习记录(七)