Files
unison/doc/manual/figures/internet-node-send.obj
2008-06-30 22:41:22 -07:00

353 lines
12 KiB
Plaintext

%TGIF 4.1.43-QPL
state(0,37,100.000,83,0,0,16,0,9,1,1,0,0,3,2,1,0,'Times-Roman',0,80640,0,3,0,10,0,0,1,1,0,16,0,0,1,1,1,1,1088,1408,1,0,2880,0).
%
% @(#)$Header$
% %W%
%
unit("1 pixel/pixel").
color_info(11,65535,0,[
"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
"red", 65535, 0, 0, 65535, 0, 0, 1,
"green", 0, 65535, 0, 0, 65535, 0, 1,
"blue", 0, 0, 65535, 0, 0, 65535, 1,
"yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
"pink", 65535, 49344, 52171, 65535, 49344, 52171, 1,
"cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
"CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1,
"white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
"black", 0, 0, 0, 0, 0, 0, 1,
"DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1
]).
script_frac("0.6").
fg_bg_colors('black','white').
dont_reencode("FFDingbests:ZapfDingbats").
page(1,"",1,'').
group([
rcbox('black','',158,451,238,499,2,1,1,0,16,125,0,0,0,0,'1',0,[
]),
text('black',158,470,1,0,1,72,18,124,13,5,0,0,0,0,2,72,18,0,0,"",0,0,0,0,483,'',[
minilines(72,18,0,0,0,0,0,[
mini_line(72,13,5,0,0,0,[
str_block(0,72,13,5,0,0,0,0,0,[
str_seg('black','Courier',0,80640,72,13,5,0,0,0,0,0,0,0,
"NetDevice")])
])
])])
],
141,0,0,[
]).
group([
rcbox('black','',147,77,255,125,2,1,1,0,16,354,0,0,0,0,'1',0,[
]),
text('black',163,96,1,0,1,88,18,353,13,5,0,0,0,0,2,88,18,0,0,"",0,0,0,0,109,'',[
minilines(88,18,0,0,0,0,0,[
mini_line(88,13,5,0,0,0,[
str_block(0,88,13,5,0,0,0,0,0,[
str_seg('black','Courier',0,80640,88,13,5,0,0,0,0,0,0,0,
"Application")])
])
])])
],
352,0,0,[
]).
text('black',202,172,1,1,1,90,17,473,14,3,2,0,0,0,2,90,17,0,0,"",0,0,0,0,186,'',[
minilines(90,17,0,0,1,0,0,[
mini_line(90,14,3,0,0,0,[
str_block(0,90,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,90,14,3,0,0,0,0,0,0,0,
"UdpSocketImpl")])
])
])]).
rcbox('black','',132,165,269,198,0,1,1,0,16,474,0,0,0,0,'1',0,[
]).
text('black',202,241,1,1,1,88,17,475,14,3,2,0,0,0,2,88,17,0,0,"",0,0,0,0,255,'',[
minilines(88,17,0,0,1,0,0,[
mini_line(88,14,3,0,0,0,[
str_block(0,88,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,88,14,3,0,0,0,0,0,0,0,
"UdpL4Protocol")])
])
])]).
rcbox('black','',132,234,269,267,0,1,1,0,16,476,0,0,0,0,'1',0,[
]).
text('black',201,317,1,1,1,90,17,490,14,3,2,0,0,0,2,90,17,0,0,"",0,0,0,0,331,'',[
minilines(90,17,0,0,1,0,0,[
mini_line(90,14,3,0,0,0,[
str_block(0,90,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,90,14,3,0,0,0,0,0,0,0,
"Ipv4L3Protocol")])
])
])]).
rcbox('black','',131,310,268,343,0,1,1,0,16,491,0,0,0,0,'1',0,[
]).
text('black',540,56,1,0,1,180,17,496,14,3,0,0,0,0,2,180,17,0,0,"",0,0,0,0,70,'',[
minilines(180,17,0,0,0,0,0,[
mini_line(180,14,3,0,0,0,[
str_block(0,180,14,3,0,-2,0,0,0,[
str_seg('black','Times-Roman',0,80640,180,14,3,0,-2,1,0,0,0,0,
"Step in packet sending process:")])
])
])]).
text('black',480,420,4,0,1,460,68,524,14,3,0,0,0,0,2,460,68,0,0,"",0,0,0,0,434,'',[
minilines(460,68,0,0,0,0,0,[
mini_line(457,14,3,0,0,0,[
str_block(0,457,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,457,14,3,0,0,0,0,0,0,0,
"5. Ipv4Interface is an abstract base class; here, we depict the ArpIpv4Interface")])
]),
mini_line(460,14,3,0,0,0,[
str_block(0,460,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,460,14,3,0,-1,0,0,0,0,0,
"concrete class. This object looks up the MAC address if Arp is supported on this")])
]),
mini_line(454,14,3,0,0,0,[
str_block(0,454,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,454,14,3,0,0,0,0,0,0,0,
"NetDevice technology, and if there is a cache hit, it sends it to the NetDevice, or")])
]),
mini_line(197,14,3,0,0,0,[
str_block(0,197,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,197,14,3,0,-1,0,0,0,0,0,
"else it first initiates an Arp request.")])
])
])]).
text('black',479,354,3,0,1,476,51,531,14,3,0,0,0,0,2,476,51,0,0,"",0,0,0,0,368,'',[
minilines(476,51,0,0,0,0,0,[
mini_line(469,14,3,0,0,0,[
str_block(0,469,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,469,14,3,0,0,0,0,0,0,0,
"4. Ipv4L3Protocol adds the IP header, looks up a route, and sends the packet to an")])
]),
mini_line(476,14,3,0,0,0,[
str_block(0,476,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,476,14,3,0,-1,0,0,0,0,0,
"appropriate Ipv4Interface instance. In this example, the device is one that supports")])
]),
mini_line(322,14,3,0,0,0,[
str_block(0,322,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,322,14,3,0,-1,0,0,0,0,0,
"Arp, so the packet is sent to an ArpIpv4Interface object.")])
])
])]).
text('black',478,261,4,0,1,437,68,612,14,3,0,0,0,0,2,437,68,0,0,"",0,0,0,0,275,'',[
minilines(437,68,0,0,0,0,0,[
mini_line(293,14,3,0,0,0,[
str_block(0,293,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,293,14,3,0,0,0,0,0,0,0,
"3. UdpL4Protocol is where the socket-independent")])
]),
mini_line(387,14,3,0,0,0,[
str_block(0,387,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,387,14,3,0,0,0,0,0,0,0,
"protocol logic for UDP is implemented. The Send() method adds the")])
]),
mini_line(437,14,3,0,0,0,[
str_block(0,437,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,437,14,3,0,-1,0,0,0,0,0,
"UDP header, initializes the checksum, and sends the packet to the Ipv4 layer.")])
]),
mini_line(431,14,3,0,0,0,[
str_block(0,431,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,431,14,3,0,-1,0,0,0,0,0,
"Here, the Ipv4L3Protocol object is queried, and the Send() method is called.")])
])
])]).
poly('black','',2,[
201,308,201,271],2,1,1,619,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('black',208,278,1,0,1,47,17,620,14,3,0,0,0,0,2,47,17,0,0,"",0,0,0,0,292,'',[
minilines(47,17,0,0,0,0,0,[
mini_line(47,14,3,0,0,0,[
str_block(0,47,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,47,14,3,0,-1,0,0,0,0,0,
"::Send()")])
])
])]).
text('black',211,208,1,0,1,47,17,650,14,3,0,0,0,0,2,47,17,0,0,"",0,0,0,0,222,'',[
minilines(47,17,0,0,0,0,0,[
mini_line(47,14,3,0,0,0,[
str_block(0,47,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,47,14,3,0,-1,0,0,0,0,0,
"::Send()")])
])
])]).
poly('black','',2,[
201,233,201,196],2,1,1,652,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('black',211,138,1,0,1,87,17,656,14,3,0,0,0,0,2,87,17,0,0,"",0,0,0,0,152,'',[
minilines(87,17,0,0,0,0,0,[
mini_line(87,14,3,0,0,0,[
str_block(0,87,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,87,14,3,0,-1,0,0,0,0,0,
"Socket::Send()")])
])
])]).
text('black',149,17,1,0,1,310,21,683,17,4,0,0,0,0,2,310,21,0,0,"",0,0,0,0,34,'',[
minilines(310,21,0,0,0,0,0,[
mini_line(310,17,4,0,0,0,[
str_block(0,310,17,4,0,0,0,0,0,[
str_seg('black','Times-Roman',0,103680,310,17,4,0,0,0,0,0,0,0,
"Function/object trace for sending a packet")])
])
])]).
poly('black','',2,[
199,163,199,126],2,1,1,691,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('black',480,153,6,0,1,524,102,708,14,3,0,0,0,0,2,524,102,0,0,"",0,0,0,0,167,'',[
minilines(524,102,0,0,0,0,0,[
mini_line(399,14,3,0,0,0,[
str_block(0,399,14,3,0,-2,0,0,0,[
str_seg('black','Times-Roman',0,80640,399,14,3,0,-2,0,0,0,0,0,
"2. Socket::Send() forwards to UdpSocketImpl::DoSend() and later to ")])
]),
mini_line(173,14,3,0,0,0,[
str_block(0,173,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,173,14,3,0,-1,0,0,0,0,0,
"UdpSocketImpl::DoSendTo().")])
]),
mini_line(479,14,3,0,0,0,[
str_block(0,479,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,479,14,3,0,-1,0,0,0,0,0,
"These functions set the proper source and destination addresses, handle socket calls")])
]),
mini_line(524,14,3,0,0,0,[
str_block(0,524,14,3,0,-2,0,0,0,[
str_seg('black','Times-Roman',0,80640,524,14,3,0,-2,0,0,0,0,0,
"such as bind() and connect() and then the UdpL4Protocol::Send() function is called. As in a ")])
]),
mini_line(505,14,3,0,0,0,[
str_block(0,505,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,505,14,3,0,-1,0,0,0,0,0,
"real implementation, the socket must query the Ipv4 layer to find the right source address")])
]),
mini_line(187,14,3,0,0,0,[
str_block(0,187,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,187,14,3,0,-1,0,0,0,0,0,
"to match the destination address.")])
])
])]).
text('black',480,106,2,0,1,434,34,712,14,3,0,0,0,0,2,434,34,0,0,"",0,0,0,0,120,'',[
minilines(434,34,0,0,0,0,0,[
mini_line(413,14,3,0,0,0,[
str_block(0,413,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,413,14,3,0,-1,0,0,0,0,0,
"1. The Application has previously created a socket (here, a UdpSocket).")])
]),
mini_line(434,14,3,0,0,0,[
str_block(0,434,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,434,14,3,0,-1,0,0,0,0,0,
"It calls Socket::Send(). Either real data or dummy data is passed at the API.")])
])
])]).
text('black',377,315,1,1,1,60,17,774,14,3,2,0,0,0,2,60,17,0,0,"",0,0,0,0,329,'',[
minilines(60,17,0,0,1,0,0,[
mini_line(60,14,3,0,0,0,[
str_block(0,60,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,60,14,3,0,0,0,0,0,0,0,
"Ipv4Route")])
])
])]).
rcbox('black','',307,308,444,341,0,1,1,0,16,775,0,0,0,0,'1',0,[
]).
poly('black','',2,[
267,325,304,325],3,1,1,787,0,0,3,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('black',278,299,1,0,1,62,17,796,14,3,2,0,0,0,2,62,17,0,0,"",0,0,0,0,313,'',[
minilines(62,17,0,0,0,0,0,[
mini_line(62,14,3,0,0,0,[
str_block(0,62,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,62,14,3,0,-1,0,0,0,0,0,
"::Lookup()")])
])
])]).
text('black',200,385,1,1,1,102,17,803,14,3,2,0,0,0,2,102,17,0,0,"",0,0,0,0,399,'',[
minilines(102,17,0,0,1,0,0,[
mini_line(102,14,3,0,0,0,[
str_block(0,102,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,102,14,3,0,0,0,0,0,0,0,
"ArpIpv4Interface")])
])
])]).
rcbox('black','',130,378,267,411,0,1,1,0,16,804,0,0,0,0,'1',0,[
]).
poly('black','',2,[
199,380,199,343],2,1,1,810,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('black',206,350,1,0,1,47,17,811,14,3,0,0,0,0,2,47,17,0,0,"",0,0,0,0,364,'',[
minilines(47,17,0,0,0,0,0,[
mini_line(47,14,3,0,0,0,[
str_block(0,47,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,47,14,3,0,-1,0,0,0,0,0,
"::Send()")])
])
])]).
text('black',378,388,1,1,1,71,17,817,14,3,2,0,0,0,2,71,17,0,0,"",0,0,0,0,402,'',[
minilines(71,17,0,0,1,0,0,[
mini_line(71,14,3,0,0,0,[
str_block(0,71,14,3,0,0,0,0,0,[
str_seg('black','Times-Roman',0,80640,71,14,3,0,0,0,0,0,0,0,
"ArpProtocol")])
])
])]).
rcbox('black','',308,381,445,414,0,1,1,0,16,818,0,0,0,0,'1',0,[
]).
poly('black','',2,[
268,398,305,398],3,1,1,819,0,0,3,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('black',279,372,1,0,1,62,17,820,14,3,2,0,0,0,2,62,17,0,0,"",0,0,0,0,386,'',[
minilines(62,17,0,0,0,0,0,[
mini_line(62,14,3,0,0,0,[
str_block(0,62,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,62,14,3,0,-1,0,0,0,0,0,
"::Lookup()")])
])
])]).
poly('black','',2,[
199,448,199,411],2,1,1,837,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('black',206,418,1,0,1,47,17,838,14,3,0,0,0,0,2,47,17,0,0,"",0,0,0,0,432,'',[
minilines(47,17,0,0,0,0,0,[
mini_line(47,14,3,0,0,0,[
str_block(0,47,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,47,14,3,0,-1,0,0,0,0,0,
"::Send()")])
])
])]).
text('black',371,173,1,1,1,26,17,842,14,3,2,0,0,0,2,26,17,0,0,"",0,0,0,0,187,'',[
minilines(26,17,0,0,1,0,0,[
mini_line(26,14,3,0,0,0,[
str_block(0,26,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,26,14,3,0,-1,0,0,0,0,0,
"Ipv4")])
])
])]).
rcbox('black','',301,166,438,199,0,1,1,0,16,843,0,0,0,0,'1',0,[
]).
text('black',272,157,1,0,1,148,17,844,14,3,2,0,0,0,2,148,17,0,0,"",0,0,0,0,171,'',[
minilines(148,17,0,0,0,0,0,[
mini_line(148,14,3,0,0,0,[
str_block(0,148,14,3,0,-1,0,0,0,[
str_seg('black','Times-Roman',0,80640,148,14,3,0,-1,0,0,0,0,0,
"::GetAddress(outgoing if)")])
])
])]).
poly('black','',2,[
269,182,306,182],3,1,1,846,0,0,3,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).