OSI模型,即開放式通信系統互聯參考模型(Open System Interconnection,OSI/RM,Open Systems InterconnectionReference Model),是國際标準化組織(ISO)提出的一個試圖使各種計算機在世界範圍内互連為網絡的标準架構,簡稱OSI。
0SI/RM協定是由IS0(國際标準化組織)制定的,它有三個基本的功能:提供給開發者一個必須的、通用的概念以便開發完善、可以用來解釋連接配接不同系統的架構。
95【中國自動化網社群】c2bd23【http://sns.ca800.com】9d2
8825668【中國自動化網社群】6c850d【http://sns.ca800.com】a2eb3
OSI的層次劃分:OSI将計算機網絡體系結構(architecture)劃分為以下七層:
1、實體層 Physical Layer
實體接口規範,傳輸比特流,網卡是工作在實體層的。
2、資料鍊路層 Data Link Layer
成幀,保證幀的無誤傳輸,MAC位址,形成EHTHERNET幀
3、網絡層 Network Layer
路由選擇,流量控制,IP位址,形成IP包
4、傳輸層 Transport Layer
端口位址,如HTTP對應80端口。TCP和UDP工作于該層,還有就是差錯校驗和流量控制。
5、會話層 Session Layer
組織兩個會話程序之間的通信,并管理資料的交換使用NETBIOS和WINSOCK協定。QQ等軟體進行 通訊因該是工作在會話層的。
6、表示層 Presentation Layer
使得不同作業系統之間通信成為可能。
7、應用層 Application Layer
對應于各個應用軟體
它和我們常用的TCP/IP的協定層有些相似,TCP/IP把1和2封裝為一層,3和4還是獨立的層,5和6和7封裝成為一層,也就是說TCP/IP隻有四層,但是在此我講述的7層的具體意義。
在這裡我将假設一個場景,那就是把要傳輸資料的一方視為某個公司的經理,網絡傳輸被視為這個經理要把一件事情告訴另一個公司的經理。
網絡的A端:
1、應用層:A公司經理把他想要告訴B公司經理的事情用嘴講了出來。
使用者的應用程式懷網絡之間的接口 老闆
2、表示層:秘書就把A公司經理說的事情翻譯成為英文然後寫在了紙上。
協商資料交換格式 相當公司中簡報老闆、替老闆寫信的助理
3、會話層:行政的職員把秘書寫的這封信,裝到了信封封裝好了,寫上了信封的資訊。
允許使用者使用簡單易記的名稱建立連接配接 相當于公司中收寄信、寫信封與拆信封的秘書
4、傳輸層:A郵局的職工把這封信取走。
提供終端到終端的可靠連接配接 相當于公司中跑郵局的送信職員
5、網絡層:A郵局的分派的職工,把這封信分派到指定送信區域。
使用權資料路由經過大型網絡 相當于郵局中的排序勞工
6、資料鍊路層:A郵局的裝箱的職工,就把一同送往這個區域的信封裝到一個木箱子裡,然後送到A郵局物流站。
決定通路網絡媒體的方式 相當于郵局中的裝拆箱勞工
7、實體層:A郵局的物流職工把木箱運到鐵路
将資料轉換為可通過實體媒體傳送的電子信号 相當于郵局中的搬運勞工
這裡的鐵路就是網絡連接配接實體媒體
網絡的B端:
7、實體層:B郵局的物流職工把木箱從鐵路運到郵局的物流站。
6、資料鍊路層:B郵局的拆箱的職工把物流站的木箱拆箱然後把所有的信件取出來。
5、網絡層:B郵局的分派的職工,把這封信分派到指定送信區域。
4、傳輸層:B郵局的職工把這封信送到B公司。
3、會話層:B公司行政的職員把公司的信件整理并且拆封信件(假設這是公司允許的情況下)并送到各自部門的秘書手裡。
2、表示層:B公司秘書把信上的英文翻譯成為中文。
1、應用層:B公司經理聽秘書轉述給他這封信的内容。
到此為止一個完整的通過這7層的網絡通訊順利完成。接下來我将用技術術語并結合TCP/IP中的應用再描述一遍這7層協定。
(1)應用層:與其他計算機進行通訊的一個應用,它是對應應用程式的通信服務的。例如,一個沒有通信功能的字處理程式就不能執行通信的代碼,從事字處理工作的程式員也不關心OSI的第7層。但是,如果添加了一個傳輸檔案的選項,那麼字處理器的程式員就需要實作OSI的第7層。
應用層為作業系統或網絡應用程式提供通路網絡服務的接口。
應用層是模型中的最頂層,是使用者與網絡的接口,該層通過應用程式來完成網絡使用者的應用需求。該層的資料放在TCP資料包的資料部分,該層定義了一個很重要的協定——Http協定,我們一般的Web開發都是基于應用層的開發, 是以後面專題将會和大家介紹下Http協定。
既然知道http是大家在應用層的一個協定比如我們浏覽網頁什麼的就是http應用IOS上層也是基于http的協定比較簡單些,效率高靈活的比較難。
示例:Telnet(遠端登入協定)、FTP(File Transfer Protocol)、HTTP(Hyperrext Transfer Protocol)、SNMP(simple Mail Transfer Protocol)BOOTP(Boot trap.Protocol)AFP(Apple Talk檔案協定--Apple公司的網絡協定族,用于交換檔案)SNMP(Simple Network Management Protoco1)
NCP(NetWare Core Protoco1)NFS(Network File System)
(2)表示層:這一層的主要功能是定義資料格式及加密。例如,FTP允許你選擇以二進制或ASII格式傳輸。如果選擇二進制,那麼發送方和接收方不改變檔案的内容。如果選擇ASII格式,發送方将把文本從發送方的字元集轉換成标準的ASII後發送資料。在接收方将标準的ASII轉換成接收方計算機的字元集。示例:加密,ASII等。
表示層對上層資料或資訊進行變換以保證一個主機應用層資訊可以被另一個主機的應用程式了解。表示層的資料轉換包括資料的加密、壓縮、格式轉換等。
示例:
EBCDIC(extended binary coded decimal interchange code)、ASCII(Amercia Standard Code for Information Interchange);
圖像标準:JPEG(Joint Photographic Experts Group)、TIFF(Tagged Image File Format)、GIF;
視訊标準:MIDI(Musical Instrument Digital Interface)、MPEG(Motion Picture Experts Group)、QuickTime等。
ad【中國自動化網社群】2c4082【http://sns.ca800.com】48
(3)會話層:他定義了如何開始、控制和結束一個會話,包括對多個雙向小時的控制和管理,以便在隻完成連續消息的一部分時可以通知應用,進而使表示層看到的資料是連續的,在某些情況下,如果表示層收到了所有的資料,則用資料代表表示層。示例:RPC,SQL等。
會話層管理主機之間的會話程序,即負責建立、管理、終止程序之間的會話。會話層還利用在資料中插入校驗點來實作資料的同步。
SSH,Secure Shell
ZIP,Zone Information Protocol
SDP,Sockets Direct Protocol
ADSP:AppleTalk的資料流協定
ASP:AppleTalk的動态會話協定
H.245,Call Control Protocol for Multimedia Communication
ISO-SP,OSI Session Layer Protocol(X.225, ISO 8327)
iSNS,Internet Storage Name Service
NetBIOS,Network Basic Input Output System
PAP,Password Authentication Protocol
PPTP,Point-to-Point Tunneling Protocol
RPC,遠端過程調用
RTCP,實時傳輸控制協定
SMPP,Short Message Peer-to-Peer
SCP,Secure Copy Protocol
(4)傳輸層:這層的功能包括是否選擇差錯恢複協定還是無差錯恢複協定,及在同一主機上對不同應用的資料流的輸入進行複用,還包括對收到的順序不對的資料包的重新排序功能。
通過MAC和IP位址,我們可以找到網際網路上任意兩台主機來建立通信。然而這裡有一個問題,找到主機後,主機上有很多程式都需要用到網絡,比如說你在一邊聽歌和好用QQ聊天, 當網絡上發送來一個資料包時, 是怎麼知道它是表示聊天的内容還是歌曲的内容的, 這時候就需要一個參數來表示這個資料包是發送給那個程式(程序)來使用的,這個參數我們就叫做端口号,主機上用端口号來辨別不同的程式(程序),端口是0到65535之間的一個整數,0到1023的端口被系統占用,使用者隻能選擇大于1023的端口。
傳輸層的功能就是建立端口到端口的通信,網絡層就是建立主機與主機的通信,這樣如果我們确定了主機和端口,這樣就可以實作程式之間的通信了。我們所說的Socket程式設計就是通過代碼來實作傳輸層之間的通信。因為初始化Socket類對象要指定IP位址和端口号。
在傳輸層有兩個非常重要的協定:UDP 協定和TCP協定
采用UDP協定話傳輸的就是UDP資料包,同樣UDP資料包也由頭和資料兩部分組成,頭部分主要辨別了發送端口和接受端口,資料部分就是具體的内容資訊。同樣UDP資料包是放入IP資料包中的"資料"部分,IP資料包再放入資料幀中在網絡上傳輸。
由于UDP協定的可靠性差(資料發送後無法确定對方是否收到),是以又定義了一個可靠性高的協定——TCP協定,TCP協定采取了握手的方式要確定對方收到了資料。
示例:TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)、SPX(SequenCed Packet ExChange Protocol)等。ATP(AppleTalk Transaction Protocol),NBP(名字綁定協定)NetBEUI(NetBIOS Extended User Internet)
(5)網絡層:這層對端到端的包傳輸進行定義,他定義了能夠辨別所有結點的邏輯位址,還定義了路由實作的方式和學習的方式。為了适應最大傳輸單元長度小于包長度的傳輸媒體,網絡層還定義了如何将一個包分解成更小的包的分段方法。
網絡層負責對子網間的資料包進行路由選擇。網絡層還可以實作擁塞控制、網際互連等功能。
在這一層,資料的機關稱為資料包(packet)。
該層通過尋址(尋址位址)來建立兩個節點之間的連接配接,大家都知道我們的電腦連接配接上網絡後都一個IP位址,我們可以通過IP位址來确定不同的計算機是否在同一個子網路。如果我們的電腦連接配接上網絡後就有兩種位址:實體位址和網絡位址(IP位址),網絡上的計算機要通信,必須要知道通信的計算機“在哪裡”, 首先通過網絡位址來判斷是否處于同一個子網絡,然後再對實體位址(MAC)位址進行處理,進而準确确定要通信計算機的位置。
在網絡層中有我們熟悉的IP協定(即規定網絡位址的協定),目前廣泛采用的是IP協定第四版(IPv4),這個版本規定,網絡位址由32位二進制位組成。我們可以自己配置IP位址也可以自動獲得的方式得到IP位址,Ip位址分成兩部分,前24位代表網絡,後8位代表主機号, 如192.168.254.1和192.168.254.2就處于同一個子網絡裡,因為這兩個IP位址的前24位相同。
網絡層中以IP資料包的形式來傳遞資料,IP資料包也包括兩部分:頭(Head)和資料(Data),IP資料包放進資料幀中的資料部分進行傳輸。
示例:IP(Internet Protocol)、IPX(Internet work Packet Exchange)、DDP(Datagram Delivery Protoco1)ICMP(Internet Control Message Protocol)APPLETALK、
6b3365【中國自動化網社群】652ace【http://sns.ca800.com】ba9338
(6)資料鍊路層:他定義了在單個鍊路上如何傳輸資料。這些協定與被讨論的各種媒體有關。
資料鍊路層在不可靠的實體媒體上提供可靠的傳輸。該層的作用包括:實體位址尋址、資料的成幀、流量控制、資料的檢錯、重發等。
在這一層,資料的機關稱為幀(frame)。
該層對接受到實體層傳輸過來的比特流進行分組,一組電信号構成的資料包,就叫做"幀",資料鍊鍊路層就是來傳輸以"幀"為機關的資料包,把資料傳遞給上一層(網絡層),幀資料由兩部分組成:幀頭和幀資料,幀頭包括接受方實體位址(就是網卡的位址)和其他的網絡資訊,幀資料就是要傳輸的資料體。資料幀的最長為1500位元組,如果資料很長,就必須分割成多個幀進行發送。
示例: ARP、RARP、SDLC、HDLC、PPP、STP、幀中繼等。
(7)實體層:OSI的實體層規範是有關傳輸媒體的特性标準,這些規範通常也參考了其他組織制定的标準。連接配接頭、針、針的使用、電流、電流、編碼及光調制等都屬于各種實體層規範中的内容。實體層常用多個規範完成對所有細節的定義。
實體層規定了激活、維持、關閉通信端點之間的機械特性、電氣特性、功能特性以及過程特性。該層為上層協定提供了一個傳輸資料的實體媒體。隻是說明标準
在這一層,資料的機關稱為比特(bit)。
示例:802.3EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、fddi令牌環網等。。
OSI是一個定義良好的協定規範集,并有許多可選部分完成類似的任務。
它定義了開放系統的層次結構、層次之間的互相關系以及各層所包括的可能的任務。是作為一個架構來協調群組織各層所提供的服務。
但是OSI參考模型并沒有提供一個可以實作的方法,而是描述了一些概念,用來協調程序間通信标準的制定。即OSI參考模型并不是一個标準,而是一個在制定标準時所使用的概念性架構。
事實上的标準是TCP/IP參考模型
PPPOE機制
另外,還有一個最廣泛的例子就是PPPoE,在以太網上走PPP業務,也沒有用到ARP。它的實作機理是這樣的:我要跟外界通信,首先我發一個PADI廣播包;如果在這個以太網上有PPPoE伺服器(即BRAS),那麼回複一個PADO單點傳播給我;然後我再發一個PADR給PPPoE伺服器請求建立連接配接,伺服器收到後,則回複一個PADS單點傳播包,配置設定一個SessionID,PPPoE連接配接建立。
ARP、RARP
1)當ADSL撥号成功時沒有建立IP和MAC的映射。撥号連結是一種點到點鍊路,這種鍊路的特點是一端發送的資料總被另一端原順序的接受到。(即使兩端的IP不在同一段上也能夠收到)裡面有一個确定性:一定别對端收到;唯一性:一定被唯一的對端收到;順序性:包不會亂續;這樣的鍊路是不需要什麼MAC的。
2)你說的撥号可能說的是PPPOE撥号,這個是有IP和MAC的關系的,但使用的而不是ARP協定,而是PPPOE自身的保證機制。這也就是PPPOE能夠防止ARP病毒的根本所在。
如果說道信元的話那是ATM的東西。映射的不是IP和MAC,應該說的IP和VPI VCI對。
任何三層位址都需要映射到二層位址,以太網是IP和MAC,FR是IP和DLCI,ATM是IP和vpi/vci,當沒有映射時,在路由器上debug會看到“encapsulation failed”
有點看不下去了,對于你
3)得出以下結論:
1,如果計算機在通路internet的時候,不論是客戶機基于以太網,還是伺服器基于以太網技術,都必修使用ARP和RARP協定。
2,如果計算機在通路internet的時候,客戶計算機或伺服器都使用FDDI或其他非以太網技術,可以不使用ARP和RARP協定。
最大感覺就是你總結的東西都不對味
簡單的說兩句吧
1.arp和rarp 和以太網之間就是位址解析和反向位址解析協定,是基于以太網的技術,這沒什麼好說的
2.如果你非要把 arp和rarp 和internet聯系上的話 這裡面的 的關系就沒你說的那麼簡單,絕對和狹隘了,internet包含的東西很多,但是和 arp和rarp 有關系的幾乎沒有,這個是你對概念的含糊和了解的不清楚的原因
3.fddi 是光纖類東西,不論是技術還是概念都與arp和rarp 沒關系 那就更不要在說信員是什麼了
那麼,在最深層次上說, 資料在 以太網 裡面傳輸的時候,用到的是模拟信号轉為數字信号 也就是用 0和1來處理資料的電平的
一般說來 arp和rarp 用在内網中就是起到解析位址的作用(以前就是這麼定義的,而且這也是最主要的作用) 基本是在裝置(pc or sever)端上做處理的 廣義上說可以更本就不用關心他們之間是怎麼連的,那就更不需要關心又是什麼網絡~
fddi 是光纖傳輸,是将模拟信号轉為光信号來處理傳送的,在兩個局端之間有轉換裝置來處理,然後同理也是在另一端複員信号送到局端通過arp和rarp協定來處理資料具體走向的
那麼 arp和rarp 和internet的聯系 無論是基于ATM 還是 FR 還是ADSL撥号的 PPP/MP 等等網絡"中間"技術 和arp和rarp的關系簡單來說就一句話,那就是沒聯系,8杆子都打不着
最後 必須這兩個字 在做下結論的時候,在不是很清楚的情況下 最好别用 否則就是在吾人子弟的
多看看書吧
4)ADSL隻是種接入方式
5)首先說,我不是什麼高手,但是對于你所講的這些東西,自信還有一點了解。
ARP(位址解析協定)和RARP(逆位址解析協定)是某些網絡接口(如以太網和令牌環網)使用的特殊協定,用來轉換IP層和網絡接口層使用的位址。這裡已經說的很清楚,arp不是每種網絡都需要的實作。實質上你是可以實作一個二層鍊路完全由非以太網跟令牌環網構成的網絡,這裡根本不牽涉arp什麼事情。
對于TCP/IP來講,它是可選的,可有可無的。它既不是TCP/IP協定族最初額實作,也不是必須或者必要的實作,如果你不怕麻煩,完全可以不要它的存在(對于RARP協定來講,情況稍微有些特殊)。從這個意義上來講,ARP/RARP根本就沒有追究存在必要不必要的問題。
舉個例子,我們的農業生産什麼是根本?種子、土地,人,陽光,環境。除了這些之外,其它的東西就是可有可無的,農業社會,大家是刀耕火種,現在是機械化。ARP/RARP的有無就跟機械化的有無是一樣的。不是必要的,但是現在如果你說不要耕種裝置了行不行啊,答案是行,也不行。行是因為沒有一樣可以做,不行是因為現在沒有人再想去面朝黃土背朝天的勞作了,沒有了大家可能真的就不習慣了。
總之來講,讨論arp跟rarp存在的必要與否本身,根本就沒有什麼意義。
至于什麼P2P根本就跟這個文章的内容沒有什麼關系了。說是什麼技術,有些牽強。算是一個思想吧,一種軟體組織的架構。至于什麼改變網際網路基礎的潛能,讓人聽了卻是摸不着頭腦的感覺。跟之前提的什麼C/S,B/S本是一類東西,至于是采用哪種組織軟體,要看應用的特點,并不是萬能良藥,什麼東西拿P2P來就萬事大吉,選其它的就不行,反之也一樣。
你的主要問題在于,對網絡實質内容了解本身就膚淺,卻又自以為是。個人認為你需要做的是,靜下心來,認真的了解網絡的實質,不要搞些似是而非的東西出來,這樣真的很誤人的。
6)目前的網絡都有二層的位址,不過不一定叫MAC位址。譬如FR的DLCI,ATM的VPI VCI等等。
下面我們講一個執行個體化 兩台電腦的一個通信過程,比如常見的:
HTTP
HTTP協定如何工作?
大家都知道一般的通信流程:首先用戶端發送一個請求(request)給伺服器,伺服器在接收到這個請求後将生成一個響應(response)傳回給用戶端。
1.Request和Response的格式
Request格式:
HTTP請求行
(請求)頭
空行
可選的消息體
注:請求行和标題必須以作為結尾(也就是,回車然後換行)。空行内必須隻有而無其他空格。在HTTP/1.1 協定中,所有的請求頭,除Host外,都是可選的。
執行個體:
2.建立連接配接的方式
HTTP支援2中建立連接配接的方式:非持久連接配接和持久連接配接(HTTP1.1預設的連接配接方式為持久連接配接)。
1) 非持久連接配接
讓我們檢視一下非持久連接配接情況下從伺服器到客戶傳送一個Web頁面的步驟。假設該貝面由1個基本HTML檔案和10個JPEG圖像構成,而且所有這些對象都存放在同一台伺服器主機中。再假設該基本HTML檔案的URL為:gpcuster.cnblogs.com/index.html。
下面是具體步騾:
1.HTTP客戶初始化一個與伺服器主機gpcuster.cnblogs.com中的HTTP伺服器的TCP連接配接。HTTP伺服器使用預設端口号80監聽來自HTTP客戶的連接配接建立請求。
2.HTTP客戶經由與TCP連接配接相關聯的本地套接字發出—個HTTP請求消息。這個消息中包含路徑名/somepath/index.html。
3.HTTP伺服器經由與TCP連接配接相關聯的本地套接字接收這個請求消息,再從伺服器主機的記憶體或硬碟中取出對象/somepath/index.html,經由同一個套接字發出包含該對象的響應消息。
4.HTTP伺服器告知TCP關閉這個TCP連接配接(不過TCP要到客戶收到剛才這個響應消息之後才會真正終止這個連接配接)。
5.HTTP客戶經由同一個套接字接收這個響應消息。TCP連接配接随後終止。該消息标明所封裝的對象是一個HTML檔案。客戶從中取出這個檔案,加以分析後發現其中有10個JPEG對象的引用。
6.給每一個引用到的JPEG對象重複步騾1-4。
上述步驟之是以稱為使用非持久連接配接,原因是每次伺服器發出一個對象後,相應的TCP連接配接就被關閉,也就是說每個連接配接都沒有持續到可用于傳送其他對象。每個TCP連接配接隻用于傳輸一個請求消息和一個響應消息。就上述例子而言,使用者每請求一次那個web頁面,就産生11個TCP連接配接。
2) 持久連接配接
非持久連接配接有些缺點。首先,客戶得為每個待請求的對象建立并維護一個新的連接配接。對于每個這樣的連接配接,TCP得在用戶端和伺服器端配置設定TCP緩沖區,并維持TCP變量。對于有可能同時為來自數百個不同客戶的請求提供服務的web伺服器來說,這會嚴重增加其負擔。其次,如前所述,每個對象都有2個RTT的響應延長——一個RTT用于建立TCP連接配接,另—個RTT用于請求和接收對象。最後,每個對象都遭受TCP緩啟動,因為每個TCP連接配接都起始于緩啟動階段。不過并行TCP連接配接的使用能夠部分減輕RTT延遲和緩啟動延遲的影響。
在持久連接配接情況下,伺服器在發出響應後讓TCP連接配接繼續打開着。同一對客戶/伺服器之間的後續請求和響應可以通過這個連接配接發送。整個Web頁面(上例中為包含一個基本HTMLL檔案和10個圖像的頁面)自不用說可以通過單個持久TCP連接配接發送:甚至存放在同一個伺服器中的多個web頁面也可以通過單個持久TCP連接配接發送。通常,HTTP伺服器在某個連接配接閑置一段特定時間後關閉它,而這段時間通常是可以配置的。持久連接配接分為不帶流水線(without pipelining)和帶流水線(with pipelining)兩個版本。如果是不帶流水線的版本,那麼客戶隻在收到前一個請求的響應後才發出新的請求。這種情況下,web頁面所引用的每個對象(上例中的10個圖像)都經曆1個RTT的延遲,用于請求和接收該對象。與非持久連接配接2個RTT的延遲相比,不帶流水線的持久連接配接已有所改善,不過帶流水線的持久連接配接還能進一步降低響應延遲。不帶流水線版本的另一個缺點是,伺服器送出一個對象後開始等待下一個請求,而這個新請求卻不能馬上到達。這段時間伺服器資源便閑置了。
HTTP/1.1的預設模式使用帶流水線的持久連接配接。這種情況下,HTTP客戶每碰到一個引用就立即發出一個請求,因而HTTP客戶可以一個接一個緊挨着發出各個引用對象的請求。伺服器收到這些請求後,也可以一個接一個緊挨着發出各個對象。如果所有的請求和響應都是緊挨着發送的,那麼所有引用到的對象一共隻經曆1個RTT的延遲(而不是像不帶流水線的版本那樣,每個引用到的對象都各有1個RTT的延遲)。另外,帶流水線的持久連接配接中伺服器空等請求的時間比較少。與非持久連接配接相比,持久連接配接(不論是否帶流水線)除降低了1個RTT的響應延遲外,緩啟動延遲也比較小。其原因在于既然各個對象使用同一個TCP連接配接,伺服器發出第一個對象後就不必再以一開始的緩慢速率發送後續對象。相反,伺服器可以按照第一個對象發送完畢時的速率開始發送下一個對象。
3.緩存的機制
HTTP/1.1中緩存的目的是為了在很多情況下減少發送請求,同時在許多情況下可以不需要發送完整響應。前者減少了網絡回路的數量;HTTP利用一個“過期(expiration)”機制來為此目的。後者減少了網絡應用的帶寬;HTTP用“驗證(validation)”機制來為此目的。
HTTP定義了3種緩存機制:
lFreshnessallows a response to be used without re-checking it on the origin server, and can be controlled by both the server and the client. For example, the Expires response header gives a date when the document becomes stale, and the Cache-Control: max-age directive tells the cache how many seconds the response is fresh for.
lValidationcan be used to check whether a cached response is still good after it becomes stale. For example, if the response has a Last-Modified header, a cache can make aconditional requestusing the If-Modified-Since header to see if it has changed.
lInvalidationis usually a side effect of another request that passes through the cache. For example, if URL associated with a cached response subsequently gets a POST, PUT or DELETE request, the cached response will be invalidated.
4.響應授權激發機制
這些機制能被用于伺服器激發用戶端請求并且使用戶端授權。
詳細的資訊請參考:RFC 2617: HTTP Authentication: Basic and Digest Access
5.基于HTTP的應用
多線程下載下傳
下載下傳工具開啟多個發出HTTP請求的線程
每個http請求隻請求資源檔案的一部分:Content-Range: bytes 20000-40000/47000
合并每個線程下載下傳的檔案
HTTPS傳輸協定原理
兩種基本的加解密算法類型
通信過程:
優點:
用戶端産生的密鑰隻有用戶端和伺服器端能得到
加密的資料隻有用戶端和伺服器端才能得到明文
用戶端到服務端的通信是安全的
伺服器和用戶端互動:
參考文章:http://blog.csdn.net/lisa890608/article/details/8231666
http://www.cnblogs.com/qiqibo/p/3143964.html
http://www.cnblogs.com/skyofbitbit/p/3713125.html
http://www.cnblogs.com/lavenderone/archive/2011/10/14/2212523.html
TPC/IP協定是傳輸層協定,主要解決資料 如何在網絡中傳輸,而HTTP是應用層協定,主要解決如何包裝資料。關于TCP/IP和HTTP協定的關系,網絡有一段比較容易了解的介紹:
“我們在傳輸資料時,可以隻使用(傳輸層)TCP/IP協定,但是那樣的話,如 果沒有應用層,便無法識别資料内容,如果想要使傳輸的資料有意義,則必須使用到應用層協定,應用層協定有很多,比如HTTP、FTP、TELNET等,也 可以自己定義應用層協定。WEB使用HTTP協定作應用層協定,以封裝HTTP文本資訊,然後使用TCP/IP做傳輸層協定将它發到網絡上。”
我們平時說的最多的socket是什麼呢,實際上socket是對TCP/IP協定的封裝,Socket本身并不是協定,而是一個調用接口(API),通過Socket,我們才能使用TCP/IP協定。 實際上,Socket跟TCP/IP協定沒有必然的聯系。Socket程式設計接口在設計的時候,就希望也能适應其他的網絡協定。是以說,Socket的出現 隻是使得程式員更友善地使用TCP/IP協定棧而已,是對TCP/IP協定的抽象,進而形成了我們知道的一些最基本的函數接口,比如create、 listen、connect、accept、send、read和write等等。網絡有一段關于socket和TCP/IP協定關系的說法比較容易理 解:
“TCP/IP隻是一個協定棧,就像作業系統的運作機制一樣,必須要具體實作,同時還要提供對外的操作接口。這個就像作業系統會提供标準的程式設計接口,比如win32程式設計接口一樣,TCP/IP也要提供可供程式員做網絡開發所用的接口,這就是Socket程式設計接口。”
總結一些基于基于TCP/IP協定的應用和程式設計接口的知識,也就是剛才說了很多的 HTTP和Socket。
CSDN上有個比較形象的描述:HTTP是轎車,提供了封裝或者顯示資料的具體形式;Socket是發動機,提供了網絡通信的能力。
實際上,傳輸層的TCP是基于網絡層的IP協定的,而應用層的HTTP協定又是基于傳輸層的TCP協定的,而Socket本身不算是協定,就像上面所說,它隻是提供了一個針對TCP或者UDP程式設計的接口。
下面是一些經常在筆試或者面試中碰到的重要的概念,特在此做摘抄和總結。
一。什麼是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狀态,完成三次握手。
握手過程中傳送的包裡不包含資料,三次握手完畢後,用戶端與伺服器才正式開始傳送資料。理想狀态下,TCP連接配接一旦建立,在通信雙方中的任何一方主動關閉 連接配接之前,TCP 連接配接都将被一直保持下去。斷開連接配接時伺服器和用戶端均可以主動發起斷開TCP連接配接的請求,斷開過程需要經過“四次握手”(過程就不細寫了,就是伺服器和客 戶端互動,最終确定斷開)
二。利用Socket建立網絡連接配接的步驟
建立Socket連接配接至少需要一對套接字,其中一個運作于用戶端,稱為ClientSocket ,另一個運作于伺服器端,稱為ServerSocket 。
套接字之間的連接配接過程分為三個步驟:伺服器監聽,用戶端請求,連接配接确認。
1。伺服器監聽:伺服器端套接字并不定位具體的用戶端套接字,而是處于等待連接配接的狀态,實時監控網絡狀态,等待用戶端的連接配接請求。
2。用戶端請求:指用戶端的套接字提出連接配接請求,要連接配接的目标是伺服器端的套接字。為此,用戶端的套接字必須首先描述它要連接配接的伺服器的套接字,指出伺服器端套接字的位址和端口号,然後就向伺服器端套接字提出連接配接請求。
3。連接配接确認:當服 務器端套接字監聽到或者說接收到用戶端套接字的連接配接請求時,就響應用戶端套接字的請求,建立一個新的線程,把伺服器端套接字的描述發給用戶端,一旦用戶端 确認了此描述,雙方就正式建立連接配接。而伺服器端套接字繼續處于監聽狀态,繼續接收其他用戶端套接字的連接配接請求。
三。HTTP連結的特點
HTTP協定即超文本傳送協定(Hypertext Transfer Protocol ),是Web聯網的基礎,也是手機聯網常用的協定之一,HTTP協定是建立在TCP協定之上的一種應用。
HTTP連接配接最顯著的特點是用戶端發送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連接配接。從建立連接配接到關閉連接配接的過程稱為“一次連接配接”。
四。TCP和UDP的差別
1。TCP是面向鍊 接的,雖然說網絡的不安全不穩定特性決定了多少次握手都不能保證連接配接的可靠性,但TCP的三次握手在最低限度上(實際上也很大程度上保證了)保證了連接配接的 可靠性;而UDP不是面向連接配接的,UDP傳送資料前并不與對方建立連接配接,對接收到的資料也不發送确認信号,發送端不知道資料是否會正确接收,當然也不用重 發,是以說UDP是無連接配接的、不可靠的一種資料傳輸協定。