top.tipText = new Array();
var isLayers = 0;
var isAll = 0;
var isID = 0;
function init()
{
if (document.getElementById)
{
isID = 1;
}
else if (document.all)
{
isAll = 1;
}
else
{
isLayers = 1;
}
if (isLayers == 1)
{
var tipArray;
}
else
{
top.frames['tip_frame'].document.open();
top.frames['tip_frame'].document.write("");
top.frames['tip_frame'].document.close();
}
}
function findDOM(objectID,withStyle)
{
if (withStyle == 1)
{
if (isID)
{
return (document.getElementById(objectID).style);
}
else if (isAll)
{
return (document.all[objectID].style);
}
else
{
return (document.layers[objectID]);
}
}
else
{
if (isID)
{
return (document.getElementById(objectID));
}
else if (isAll)
{
return (document.all[objectID]);
}
else
{
return (document.layers[objectID]);
}
}
}
function getWidth()
{
if (window.innerWidth != null)
{
return window.innerWidth;
}
else if (document.body.clientWidth != null)
{
return document.body.clientWidth;
}
return (null);
}
function showTip(evt,framename,objectID)
{
dm = findDOM(objectID,0);
ds = findDOM(objectID,1);
setText(dm, framename);
var width = getWidth();
if (dm.offsetWidth)
{
objWidth = dm.offsetWidth;
}
else if (dm.clip.width)
{
objWidth = dm.clip.width;
}
if (evt.y || evt.pageY)
{
if (evt.pageY)
{
topVisibility = evt.pageY + 20;
leftVisibility = evt.pageX - (objWidth/4);
}
else
{
topVisibility = evt.y + 20 + document.body.scrollTop;
leftVisibility = evt.x - (objWidth/4) + document.body.scrollLeft;
}
if (leftVisibility < 2)
{
leftVisibility = 2;
}
else if (leftVisibility + objWidth > width)
{
leftVisibility -= objWidth/2;
}
ds.left = leftVisibility;
ds.top = topVisibility;
}
ds.visibility = "visible";
}
function hideTip(objectID)
{
ds = findDOM(objectID,1);
visibility = ds.visibility;
ds.visibility = "hidden";
}
function setText(dm,framename)
{
var tmpArray;
var frameFound = false;
for (var i=0; i=4)
this.ns4 = (this.b=="ns" && this.v==4)
this.ns5 = (this.b=="ns" && this.v==5)
this.ie = (this.b=="ie" && this.v>=4)
this.ie4 = (navigator.userAgent.indexOf('MSIE 4')>0)
this.ie5 = (navigator.appVersion.indexOf('MSIE 5.0')>0)
this.ie55 = (navigator.appVersion.indexOf('MSIE 5.5')>0)
if (this.ie5) this.v = 5
this.min = (this.ns||this.ie)
}
// automatically create the "is" object
is = new BrowserCheck()
if (document.getElementById || document.all)
{
document.write("");
}
else
{
document.write("");
}
document.write(abs_rlo_pos)
Funkcjonowanie protokołu TCP
document.write(abs_rio_pos);
Okienkowanie i rozmiar okna
Na tej stronie wyjaśniono, w jaki sposób protokół TCP używa okien do
kontrolowania przepływu danych.
Ilość danych, jakie mają zostać
przesłane, często przekracza rozmiar pojedynczego segmentu. W takiej sytuacji
konieczne jest podzielenie ich na mniejsze kawałki, aby umożliwić prawidłową
transmisję. Protokół TCP jest odpowiedzialny za dzielenie danych na segmenty.
Można to porównać do karmienia małego dziecka. Aby pożywienie zmieściło się w
jego ustach, należy je pokroić na mniejsze kawałki. Ponadto urządzenie może nie
być w stanie odebrać danych tak szybko, jak nadawca je wysyła. Może ono być
zajęte innymi czynnościami lub też urządzenie nadawcy może mieć większą
wydajność.
Po przeprowadzeniu segmentacji danych konieczne jest ich
przesłanie do urządzenia docelowego. Jedną z możliwości protokołu TCP jest
kontrola przepływu, która służy do regulowania ilości informacji wysyłanych w
danym okresie transmisji. Kontrola przepływu jest także znana jako
okienkowanie.
Rozmiar okna określa ilość danych, jaka może być wysłana
przed otrzymaniem potwierdzenia ze strony odbiorcy. Po wysłaniu ilości bajtów
określonej przez rozmiar okna, host musi otrzymać potwierdzenie, że dane
zostały otrzymane, zanim wyśle następne dane. Na przykład, jeśli rozmiar okna
wynosi 1, każdy bajt musi być potwierdzony zanim następny bajt zostanie
wysłany.
TCP stosuje technikÄ™ okna o zmiennym rozmiarze. UrzÄ…dzenia
negocjują rozmiar okna określając ilość bajtów, które można wysłać przed
otrzymaniem potwierdzenia.
Â
Proces dynamicznej zmiany rozmiaru okna zwiększa
niezawodność. Rozmiar okna może być zmieniany na podstawie otrzymywanych
potwierdzeń.
Ćwiczenie interaktywne umożliwi uczestnikom kursu
zrozumienie idei okienkowania.
Na następnej stronie opisano pojęcie
numerów sekwencyjnych w protokole TCP.
Ćwiczenie interaktywne
Dopasowanie: Okienkowanie
W trakcie tego
ćwiczenia uczestnik kursu pozna pojęcie okienkowania.
Wyszukiwarka
Podobne podstrony:
contentcontentcontentcontentcontentcontentcontentcontentcontentfunction domnode get contentcontentcontentcontentcontentcontentcontentwięcej podobnych podstron