亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

tcp(傳輸層)

TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793定義。在簡化的計算機網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能,用戶數(shù)據(jù)報協(xié)議(UDP)是同一層內(nèi) 另一個重要的傳輸協(xié)議。在因特網(wǎng)協(xié)議族(Internet protocol suite)中,TCP層是位于IP層之上,應(yīng)用層之下的中間層。不同主機的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。

應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)摹⒂?位字節(jié)表示的數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分區(qū)成適當長度的報文段(通常受該計算機連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳輸單元( MTU)的限制)。之后TCP把結(jié)果包傳給IP層,由它來通過網(wǎng)絡(luò)將包傳送給接收端實體 的TCP層。TCP為了保證不發(fā)生丟包,就給每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然后接收端實體對已成功收到的包發(fā)回一個相應(yīng)的確認(ACK);如果發(fā)送端實體在合理的往返時延(RTT)內(nèi)未收到確認,那么對應(yīng)的數(shù)據(jù)包就被假設(shè)為已丟失將會被進行重傳。TCP用一個校驗和函數(shù)來檢驗數(shù)據(jù)是否有錯誤;在發(fā)送和接收時都要計算校驗和。

三次握手

TCP是因特網(wǎng)中的傳輸層協(xié)議,使用三次握手協(xié)議建立連接。當主動方發(fā)出SYN連接請求后,等待對方回答SYN+ACK ,并最終對對方的 SYN 執(zhí)行 ACK 確認。這種建立連接的方法可以防止產(chǎn)生錯誤的連接,TCP使用的流量控制協(xié)議是可變大小的滑動窗口協(xié)議。 TCP三次握手的過程如下:

  • 客戶端發(fā)送SYN(SEQ=x)報文給服務(wù)器端,進入SYN_SEND狀態(tài)。
  • 服務(wù)器端收到SYN報文,回應(yīng)一個SYN (SEQ=y)ACK(ACK=x+1)報文,進入SYN_RECV狀態(tài)。
  • 客戶端收到服務(wù)器端的SYN報文,回應(yīng)一個ACK(ACK=y+1)報文,進入Established狀態(tài)。

連接成功

連接成功之后雙方即可互相傳輸字節(jié)流,并隨時可關(guān)閉連接,傳輸?shù)臄?shù)據(jù)有以下特性

  • 傳輸?shù)臄?shù)據(jù)被tcp分割成了最適合發(fā)送的數(shù)據(jù)塊 傳遞給ip協(xié)議,這個發(fā)送數(shù)據(jù)稱為 報文段 或 段

  • tcp作為可靠性連接,每次發(fā)送數(shù)據(jù)段,會啟動一個定時器,每次接收數(shù)據(jù)段,會發(fā)送一次確認,如果定時器沒有及時收到確認,則會重發(fā)數(shù)據(jù)

  • TCP將保持它首部和數(shù)據(jù)的檢驗和。這是一個端到端的檢驗和,目的是檢測數(shù)據(jù)在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP將丟棄這個報文段和不確認收到此報文段(希望發(fā)端超時并重發(fā))。

  • 兩個應(yīng)用程序通過TCP連接交換8bit字節(jié)構(gòu)成的字節(jié)流。TCP不在字節(jié)流中插入記錄標識符。我們將這稱為字節(jié)流服務(wù)(bytestreamservice)。如果一方的應(yīng)用程序先傳10字節(jié),又傳20字節(jié),再傳50字節(jié),連接的另一方將無法了解發(fā)方每次發(fā)送了多少字節(jié)。只要自己的接收緩存沒有塞滿,TCP 接收方將有多少就收多少。一端將字節(jié)流放到TCP連接上,同樣的字節(jié)流將出現(xiàn)在TCP連接的另一端。

四次揮手

建立一個連接需要三次握手,而終止一個連接要經(jīng)過四次揮手,這是由TCP的半關(guān)閉(half-close)造成的。具體過程如下所示。

  • 某個應(yīng)用進程首先調(diào)用close,稱該端執(zhí)行“主動關(guān)閉”(active close)。該端的TCP于是發(fā)送一個FIN分節(jié),表示數(shù)據(jù)發(fā)送完畢。
  • 接收到這個FIN的對端執(zhí)行 “被動關(guān)閉”(passive close),這個FIN由TCP確認。
  • 注意:FIN的接收也作為一個文件結(jié)束符(end-of-file)傳遞給接收端應(yīng)用進程,放在已排隊等候該應(yīng)用進程接收的任何其他數(shù)據(jù)之后,因為,F(xiàn)IN的接收意味著接收端應(yīng)用進程在相應(yīng)連接上再無額外數(shù)據(jù)可接收。
  • 一段時間后,接收到這個文件結(jié)束符的應(yīng)用進程將調(diào)用close關(guān)閉它的套接字。這導(dǎo)致它的TCP也發(fā)送一個FIN。
  • 接收這個最終FIN的原發(fā)送端TCP(即執(zhí)行主動關(guān)閉的那一端)確認這個FIN。 既然每個方向都需要一個FIN和一個ACK,因此通常需要4個分節(jié)。

“通常”是指,某些情況下,步驟1的FIN隨數(shù)據(jù)一起發(fā)送,另外,步驟2和步驟3發(fā)送的分節(jié)都出自執(zhí)行被動關(guān)閉那一端,有可能被合并成一個分節(jié)。 在步驟2與步驟3之間,從執(zhí)行被動關(guān)閉一端到執(zhí)行主動關(guān)閉一端流動數(shù)據(jù)是可能的,這稱為“半關(guān)閉”(half-close)。 當一個Unix進程無論自愿地(調(diào)用exit或從main函數(shù)返回)還是非自愿地(收到一個終止本進程的信號)終止時,所有打開的描述符都被關(guān)閉,這也導(dǎo)致仍然打開的任何TCP連接上也發(fā)出一個FIN。 無論是客戶還是服務(wù)器,任何一端都可以執(zhí)行主動關(guān)閉。通常情況是,客戶執(zhí)行主動關(guān)閉,但是某些協(xié)議,例如,HTTP/1.0卻由服務(wù)器執(zhí)行主動關(guān)閉。

php中的tcp

php可通過socket函數(shù),swoole擴展,stream流函數(shù)進行創(chuàng)建tcp協(xié)議的socket,綁定網(wǎng)卡端口,進行tcp服務(wù)端/客戶端操作 在php中,我們并不需要了解tcp的握手/揮手,我們只需要知道ip:port能連接/創(chuàng)建 一個tcp服務(wù)端/客戶端就行了
使用php的socket,我們可以直接發(fā)送字符串,接收的也是字符串,其他一切都是語言,操作系統(tǒng)所需要做的事,
我們只需要處理好字符串的完整性,例如我們使用php做tcp服務(wù)端

  • 客戶端連接成功后,發(fā)送了一個"easyswoole是一個非常好的swoole框架"的字符串
  • 而服務(wù)端每次只接收9個字節(jié),那第一次獲取只會接收到"easyswool"的殘缺字符串,需要繼續(xù)獲取數(shù)據(jù)

其他

可自行搜索詳細理解

主站蜘蛛池模板: 欧美日韩亚洲一区二区三区 | 校园春色男人天堂 | 成人免费视频视频 | 亚洲精品图片一区15p | 偷看洗澡一二三区美女 | 日本视频久久 | 99综合色 | 欧美一区二区三区四区在线观看 | 日韩av在线高清 | 视频精品一区二区三区 | 国产日韩亚洲欧美 | 伊人精品久久 | 三级毛片在线免费观看 | 91精品国产99| 国产一区二区三区高清 | 黄色一级片网站 | 九九热精品在线播放 | 亚洲自拍偷拍综合 | 国产精品不卡在线观看 | 91精品国产99久久久久久久 | 日韩毛片在线免费观看 | 国产在线中文 | 中文字幕精品一区二区三区在线 | 免费观看国产精品 | 亚洲欧美成人综合 | 国产91综合 | 亚洲免费成人 | 国产精品嫩草影院桃色 | 国产又粗又猛又爽又黄毛片 | 久草青娱乐 | 国产亚洲中字幕欧 | 中文字幕亚洲在线 | 手机sss视频 | 国产原创中文在线观看 | www日韩| 亚洲精品一区二区三区不 | 欧美日韩视频在线观看免费 | 秋霞欧美一区二区三区视频免费 | 毛片网止 | 一道本在线观看 | av在线免费观看网站 |