TCP的一些整理

2021-08-27 09:16:45 字數 3592 閱讀 6949

先說一下七層協議和四層協議

物理層規定了啟用、維持、關閉通訊端點之間的機械特性、電氣特性、功能特性以及過程特性。該層為上層協議提供了乙個傳輸資料的物理**。

在這一層,資料的單位稱為位元(bit)。

屬於物理層定義的典型規範代表包括:eia/tia-232, eia/tia-499, v.35, v.24, rj45, ethernet, 802.3,802.5, fddi, nrzi, nrz, b8zs等。

資料鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:實體地址定址、資料的成幀、流量控制、資料的檢錯、重發等。

在這一層,資料的單位稱為幀(frame)。

資料鏈路層協議的代表包括:frame relay, hdlc, ppp, ieee 802.3/802.2, fddi,atm,sdlc,hdlc,stp,幀中繼等。

網路層負責對子網間的資料報進行路由選擇。網路層還可以實現擁塞控制、網際互連等功能。

在這一層,資料的單位稱為資料報(packet)。

網路層協議的代表包括:ip、ipx、rip、ospf等。

傳輸層是第乙個端到端,即主機到主機的層次。傳輸層負責將上層資料分段並提供端到端的、可靠的或不可靠的傳輸。此外,傳輸層還要處理端到端的差錯控制和流量控制問題。

在這一層,資料的單位稱為資料段(segment)。

傳輸層協議的代表包括:tcp、udp、spx等。

會話層管理主機之間的會話程序,即負責建立、管理、終止程序之間的會話。會話層還利用在資料中插入校驗點來實現資料的同步。

表示層對上層資料或資訊進行變換以保證乙個主機應用層資訊可以被另乙個主機的應用程式理解。表示層的資料轉換包括資料的加密、壓縮、格式轉換等。

應用層為作業系統或網路應用程式提供訪問網路服務的介面。

這層協議的代表包括:telnet、ftp、http、snmp等。

osi中的層

功能

tcp/ip協議族

應用層

檔案傳輸,電子郵件,檔案服務,虛擬終端

tftp,http,snmp,ftp,smtp,dns,telnet 等等

表示層

資料格式化,**轉換,資料加密

沒有協議

會話層

解除或建立與別的接點的聯絡

沒有協議

傳輸層

提供端對端的介面

tcp,udp

網路層

為資料報選擇路由

ip,icmp,ospf,eigrp,igmp,rip

資料鏈路層

傳輸有位址的幀以及錯誤檢測功能

slip,cslip,ppp,mtu,arp,rarp

物理層

以二進位制資料形式在物理**上傳輸資料

iso2110,ieee802,ieee802.2

tcp/ip

osi

應用層

應用層

表示層

會話層

主機到主機層(tcp)(又稱傳輸層)

傳輸層

網路層(ip)(又稱互聯層)

網路層

網路介面層(又稱鏈路層)

資料鏈路層

物理層

網路介面層:

定義物理介質的各種特性

資料鏈路協議(fddi,ppp)等。

網路層:

負責計算機之間的通訊 ip

傳輸層:

提**用程式間的通訊

tcp、udp

應用層:

向使用者提供一組常用的應用程式

telnet、ftp、smtp、www等。

tcp是一種面向連線(連線導向)的、可靠的、基於位元組流的運輸層(transport layer)通訊協議。

由上面的內容我們可以看出來,tcp協議在傳輸層,在網路層之上,應用層之下。

不同主機的應用層之間經常需要可靠的、像管道一樣的連線,但是網路層不提供這樣的流機制,而是提供不可靠的包交換。

位碼即tcp標誌位,有6種標示:

syn(synchronous建立聯機) 當syn=1,表明這是乙個連線請求或連線接受報文。

ack(acknowledgement 確認) 只有當ack=1時確認號才有效。

psh(push傳送) 當psh=1,表明應盡快交付給應用程序。

fin(finish結束) 當fin=1,表明此報文字段已經傳送完畢,並要求釋放連線。

rst(reset重置) 當rst=1,表明連線出現差錯,需要釋放連線,通知一下對方。

urg(urgent緊急) 當urg=1,表明緊急指標字段有效,它告訴系統此報文段中有緊急資料,應盡快傳送。

sequence number(順序號碼)

acknowledge number(確認號碼)

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線:

第一次握手:主機a傳送位碼為syn=1,隨機產生seq number=1234567的資料報到伺服器,主機b由syn=1知道,a要求建立聯機。

第二次握手:主機b收到請求後要確認聯機資訊,向a傳送ack number=(主機a的seq+1),syn=1,ack=1,隨機產生seq=7654321的包

第三次握手:主機a收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機a會再傳送ack number=(主機b的seq+1),ack=1,主機b收到後確認seq值與ack=1則連線建立成功。

完成三次握手,主機a與主機b開始傳送資料。

在tcp/ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。

第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認;

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;

第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。

完成三次握手,客戶端與伺服器開始傳送資料.

在internet上,計算機間通過tcp/ip協議傳送和接收資料報,各個資料報根據其目的主機的ip位址來進行網際網路絡中的路由選擇。可見,把資料報順利的傳送到目的主機是沒有問題的。

問題是,我們知道大多數作業系統都支援多程序同時執行,那麼目的主機應該把接收到的資料報傳送給眾多同時執行的程序中的哪乙個呢?

於是,有了埠

本地作業系統會給那些有需求的程序分配協議埠(protocol port,即我們常說的埠),每個協議埠由乙個正整數標識,如:80,139,445,2000等等。

當目的主機接收到資料報後,將根據報文首部的目的埠號(你看看上面有個圖),把資料傳送到相應埠,而與此埠相對應的那個程序將會領取資料並等待下一組資料的到來。

整理的一些Bug

前言 最近在學c 因為公司要求,以前從沒接觸過c 但是來到這個公司公司的人要我負責c 的乙個工程,所以沒辦法,學唄,難道不是很難,現在的學習環境也很好,直接就上專案,這樣學起來會很快,這篇部落格是將我所遇到的一些bug整理一下,以回顧回顧。1.無法顯示額外的 分析警告或錯誤 在使用vs2005編譯程...

memcached一些整理

memcached官方站點 安裝幫助 windows下的.net memcached安裝 memcached net客戶端 1 net memcached client library 2 enyim.com memcached client 3 memcached providers 4 beit...

整理一些工具

1.lvss微軟的產品。簡單好用,區域網中用vss。適用於team級還可以,企業級不好,僅支援windows 作業系統。visual sourcesafe 是乙個源 控制系統,可以儲存檔案的不同版本,可以比較檔案的差別,可以控制不同的人對同一檔案的修改。windows平台下使用vss開發的典型環境是...