orm@doc-tcpip.org | Erstellt: November 1999 - Letzte Modifikation: August 2003 |
In diesem Trace hat der NFS-Client cristina ein Verzeichnis vom NFS-Server nimmaster gemountet. Der User root wird jetzt in diesem Verzeichnis ein File ein.file anlegen und editieren. Er führt also etwas wie vi ein.file aus.
Packet Number 3 TOK: ====( 190 bytes transmitted on interface tr0 )==== 17:17:34.592049654 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=168, ip_id=57446, ip_off=0 IP: ip_ttl=60, ip_sum=883f, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f5793, th_ack=3ae54219 TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60000, th_sum=bc2d, th_urp=0 RPC: Record Marker: Size = 124, Last Fragment (0x8000007c) RPC: **CALL** XID=28458008 RPC: Program=100003 (NFS_PROGRAM) Version=3 Procedure=1 (NFSPROC3_GETATTR) RPC: AUTH_UNIX RPC: Cred: RPC: Time=0x3ac3520e (Thu Mar 29 17:17:34 2001) RPC: Machine=cristina Uid=0 Gid=0 Group List Length=5 RPC: Groups= ( 0 4 7 1100 1061 ) NFS: Fhandle: NFS: 000a0007 00000003 000a0000 00023665 NFS: 563b0000 000a0000 00023665 563b0000
Der Client nimmt den vorhanden Filehandle und fragt erst einmal nach den Attributen des Filesystems.
Die Nutzlast des TCP/IP Paketes ist dabei der RPC (Remote Procedure Call), der wiederum eine NFS Anfrage beinhaltet. Die einzelnen Teile sind:
Der Record Marker: Hier wird die Größe und eine eventuelle Fragmentierung vermerkt, damit das Paket wieder richtig zusammen gebaut werden kann.
Der Typ und die eXtended ID des RPC. Der Typ kann CALL oder REPLY sein, und die XID ist bei allen zu einer Anfrage oder Vorgang gehörenden Paketen immer gleich.
In dieser Zeile steht, welche Remote Procedure aufgerufen werden soll. In unserem Fall ist es der Dienst 100003 (NFS Deamon), daher ist das Paket auch an den entsprechenden Port 2049 gerichtet. Angesprochen wird die Version 3, und es soll die Prozedur 1 ausgeführt werden (NFSPROC3_GETATTR). Die Programme bzw. Ports findet man per rpcinfo-Befehl, die Prozeduren finden sich in der Doku.
Der Ausweis des Paketes, die credentials. Die benutzte Methode ist Unix-Authentifizierung (AUTH_UNIX). Der eigentliche Ausweis ist ein Zeitstempel, zusammen mit dem Maschinennamen des Client (cristina), der UID des aufrufenden Users (hier root, UID 0), seiner Hauptgruppe und einer Liste mit 5 Elementen der sonstigen Gruppen, zu denen er gehört.
Der Filehandle, ein für den Client und für NFS unverständliches Ticket. Der Server kann anhand dieses Tickets die gewünschte Datei zuverlässig finden. Unter AIX ist dort die Major/Minor Nummer des Device und die Inode des Files verkoded - in der Abteilung NFS findet sich dazu eine Seite.
Packet Number 4 TOK: ====( 178 bytes received on interface tr0 )==== 17:17:34.594492542 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 10, frame control field = 40 TOK: [ src = 08:00:5a:0d:64:1d, dst = 00:06:29:b9:50:3f] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.2 > (nimmaster) IP: < DST = 172.16.1.3 > (cristina) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=156, ip_id=31852, ip_off=0 IP: ip_ttl=60, ip_sum=ec45, ip_p = 6 (TCP) TCP: < source port=2049(nfs), destination port=58022 > TCP: th_seq=3ae54219, th_ack=901f5813 TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60032, th_sum=6653, th_urp=0 RPC: Record Marker: Size = 112, Last Fragment (0x80000070) RPC: **REPLY** XID=28458008 RPC: 100003(NFS_PROGRAM) 1(NFSPROC3_GETATTR) RPC: Reply Stat: MSG_ACCEPTED RPC: Accepted Reply Stat: SUCCESS NFS: Stat: (0) NFS3_OK NFS: File Attributes: NFS: Type=2(NFDIR) Mode=241777 Nlink=22 Uid=2 Gid=2 Rdev=(0,9) NFS: Size=6656 Used=8192 NFS: Fsid=655367 Fileid=2 NFS: Access Time: Sec=985879005 Nsec=846541052 NFS: Modify Time: Sec=985860006 Nsec=557580952 NFS: Create Time: Sec=985860006 Nsec=557580952
Der Server antwortet mit den Attributen.
Die ersten Felder des RPC-Teils sind wie gehabt, der Typ des Paketes ist jetzt natürlich REPLY. Danach kommt ein Status, der sich nur auf die RPC-Funktion bezieht, also nichts über den gewünschten Erfolg aussagt. Das RPC Paket ist akzeptiert, RPC konnte den Status der Datei erfolgreich ermitteln (der Status SUCCESS würde aber auch dann gesetzt, wenn eine Error-Meldung kommt, weil das File nicht existiert). Danach folgt der Status der eigentlichen NFS Funktion. Diese wurde auch erfolgreich ausgeführt; deshalb folgen die Attribute der Datei.
Dabei ist:
Typ der Datei:
Die Berechtigungen des Files, wobei ich noch nicht herausgefunden habe, wie es verkoded ist.
Die Anzahl der harten Links auf diese Datei.
Die UID und GID des File-Owners
Die Major/Minor Number (0 und 9) des remoten Device (Rdev)
Die effektive Größe des Files in Bytes, und der effektive für diese File allokierte Platz in Bytes (Unter Unix wird Platz in Blocks vergeben - dieses File belegt zwei Blocks).
Eine Kennzeichnung des Filesystemes, in dem das File liegt, sowie die Inode des Files. Wie man die Fsid sinnvoll nutzt, ist mir unklar.
Die Zeitstempel der Datei:
Access - letztes Öffnen der Datei
Modify - letzte Änderung der Daten in der Datei
Create - letzte Status-Änderung der Datei (d.h. Schreiben der Inode)
Packet Number 5 TOK: ====( 62 bytes transmitted on interface tr0 )==== 17:17:34.606352712 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=40, ip_id=57447, ip_off=0 IP: ip_ttl=60, ip_sum=88be, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f5813, th_ack=3ae5428d TCP: th_off=5, flags< ACK > TCP: th_win=60000, th_sum=5f7c, th_urp=0
Ein ACK auf die Antwort des Servers.
Packet Number 6 TOK: ====( 202 bytes transmitted on interface tr0 )==== 17:17:46.849302433 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=180, ip_id=57463, ip_off=0 IP: ip_ttl=60, ip_sum=8822, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f5813, th_ack=3ae5428d TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60000, th_sum=14a4, th_urp=0 RPC: Record Marker: Size = 136, Last Fragment (0x80000088) RPC: **CALL** XID=28458009 RPC: Program=100003 (NFS_PROGRAM) Version=3 Procedure=3 (NFSPROC3_LOOKUP) RPC: AUTH_UNIX RPC: Cred: RPC: Time=0x3ac3521a (Thu Mar 29 17:17:46 2001) RPC: Machine=cristina Uid=0 Gid=0 Group List Length=5 RPC: Groups= ( 0 4 7 1100 1061 ) NFS: Fhandle: NFS: 000a0007 00000003 000a0000 00023665 NFS: 563b0000 000a0000 00023665 563b0000 NFS: File Name: ein.file
Der Client schaut jetzt im Verzeichnis nach, ob es dieses File schon gibt. Dazu dient die LOOKUP Prozedur. Der Filehandle ist der des Verzeichnises.
Packet Number 7 TOK: ====( 182 bytes received on interface tr0 )==== 17:17:46.852042964 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 10, frame control field = 40 TOK: [ src = 08:00:5a:0d:64:1d, dst = 00:06:29:b9:50:3f] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.2 > (nimmaster) IP: < DST = 172.16.1.3 > (cristina) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=160, ip_id=31855, ip_off=0 IP: ip_ttl=60, ip_sum=ec3e, ip_p = 6 (TCP) TCP: < source port=2049(nfs), destination port=58022 > TCP: th_seq=3ae5428d, th_ack=901f589f TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60032, th_sum=6547, th_urp=0 RPC: Record Marker: Size = 116, Last Fragment (0x80000074) RPC: **REPLY** XID=28458009 RPC: 100003(NFS_PROGRAM) 3(NFSPROC3_LOOKUP) RPC: Reply Stat: MSG_ACCEPTED RPC: Accepted Reply Stat: SUCCESS NFS: Stat: (2) Error- No such file or directory NFS: Directory attributes: NFS: Type=2(NFDIR) Mode=241777 Nlink=22 Uid=2 Gid=2 Rdev=(0,9) NFS: Size=6656 Used=8192 NFS: Fsid=655367 Fileid=2 NFS: Access Time: Sec=985879005 Nsec=846541052 NFS: Modify Time: Sec=985860006 Nsec=557580952 NFS: Create Time: Sec=985860006 Nsec=557580952
Der Server teilt den Status des RPC mit. Der Call hat funktioniert, die eigentliche Antwort kommt vom NFS; das hat festgestellt, daß es das File nicht gibt. Zusätzlich gibt es noch die Attribute des Verzeichnis mit aus.
Packet Number 8 TOK: ====( 62 bytes transmitted on interface tr0 )==== 17:17:46.909900008 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=40, ip_id=57464, ip_off=0 IP: ip_ttl=60, ip_sum=88ad, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f589f, th_ack=3ae54305 TCP: th_off=5, flags< ACK > TCP: th_win=60000, th_sum=5e78, th_urp=0
Diese Nachricht muß der Client erst einmal verdauen, deshalb ein einzelner ACK.
Packet Number 9 TOK: ====( 202 bytes transmitted on interface tr0 )==== 17:18:27.903846649 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=180, ip_id=57469, ip_off=0 IP: ip_ttl=60, ip_sum=881c, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f589f, th_ack=3ae54305 TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60000, th_sum=1376, th_urp=0 RPC: Record Marker: Size = 136, Last Fragment (0x80000088) RPC: **CALL** XID=28458010 RPC: Program=100003 (NFS_PROGRAM) Version=3 Procedure=3 (NFSPROC3_LOOKUP) RPC: AUTH_UNIX RPC: Cred: RPC: Time=0x3ac35243 (Thu Mar 29 17:18:27 2001) RPC: Machine=cristina Uid=0 Gid=0 Group List Length=5 RPC: Groups= ( 0 4 7 1100 1061 ) NFS: Fhandle: NFS: 000a0007 00000003 000a0000 00023665 NFS: 563b0000 000a0000 00023665 563b0000 NFS: File Name: ein.file
Der Client kann es nicht fassen und fragt nocheinmal.
Packet Number 10 TOK: ====( 182 bytes received on interface tr0 )==== 17:18:27.906391780 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 10, frame control field = 40 TOK: [ src = 08:00:5a:0d:64:1d, dst = 00:06:29:b9:50:3f] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.2 > (nimmaster) IP: < DST = 172.16.1.3 > (cristina) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=160, ip_id=31884, ip_off=0 IP: ip_ttl=60, ip_sum=ec21, ip_p = 6 (TCP) TCP: < source port=2049(nfs), destination port=58022 > TCP: th_seq=3ae54305, th_ack=901f592b TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60032, th_sum=6442, th_urp=0 RPC: Record Marker: Size = 116, Last Fragment (0x80000074) RPC: **REPLY** XID=28458010 RPC: 100003(NFS_PROGRAM) 3(NFSPROC3_LOOKUP) RPC: Reply Stat: MSG_ACCEPTED RPC: Accepted Reply Stat: SUCCESS NFS: Stat: (2) Error- No such file or directory NFS: Directory attributes: NFS: Type=2(NFDIR) Mode=241777 Nlink=22 Uid=2 Gid=2 Rdev=(0,9) NFS: Size=6656 Used=8192 NFS: Fsid=655367 Fileid=2 NFS: Access Time: Sec=985879005 Nsec=846541052 NFS: Modify Time: Sec=985860006 Nsec=557580952 NFS: Create Time: Sec=985860006 Nsec=557580952
Der Server antwortet wie erwartet.
Packet Number 11 TOK: ====( 202 bytes transmitted on interface tr0 )==== 17:18:27.907326895 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=180, ip_id=57470, ip_off=0 IP: ip_ttl=60, ip_sum=881b, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f592b, th_ack=3ae5437d TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60000, th_sum=1271, th_urp=0 RPC: Record Marker: Size = 136, Last Fragment (0x80000088) RPC: **CALL** XID=28458011 RPC: Program=100003 (NFS_PROGRAM) Version=3 Procedure=3 (NFSPROC3_LOOKUP) RPC: AUTH_UNIX RPC: Cred: RPC: Time=0x3ac35243 (Thu Mar 29 17:18:27 2001) RPC: Machine=cristina Uid=0 Gid=0 Group List Length=5 RPC: Groups= ( 0 4 7 1100 1061 ) NFS: Fhandle: NFS: 000a0007 00000003 000a0000 00023665 NFS: 563b0000 000a0000 00023665 563b0000 NFS: File Name: ein.file
Der Client kann es immer noch nicht fassen und fragt nocheinmal.
Packet Number 12 TOK: ====( 182 bytes received on interface tr0 )==== 17:18:27.909951041 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 10, frame control field = 40 TOK: [ src = 08:00:5a:0d:64:1d, dst = 00:06:29:b9:50:3f] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.2 > (nimmaster) IP: < DST = 172.16.1.3 > (cristina) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=160, ip_id=31885, ip_off=0 IP: ip_ttl=60, ip_sum=ec20, ip_p = 6 (TCP) TCP: < source port=2049(nfs), destination port=58022 > TCP: th_seq=3ae5437d, th_ack=901f59b7 TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60032, th_sum=633d, th_urp=0 RPC: Record Marker: Size = 116, Last Fragment (0x80000074) RPC: **REPLY** XID=28458011 RPC: 100003(NFS_PROGRAM) 3(NFSPROC3_LOOKUP) RPC: Reply Stat: MSG_ACCEPTED RPC: Accepted Reply Stat: SUCCESS NFS: Stat: (2) Error- No such file or directory NFS: Directory attributes: NFS: Type=2(NFDIR) Mode=241777 Nlink=22 Uid=2 Gid=2 Rdev=(0,9) NFS: Size=6656 Used=8192 NFS: Fsid=655367 Fileid=2 NFS: Access Time: Sec=985879005 Nsec=846541052 NFS: Modify Time: Sec=985860006 Nsec=557580952 NFS: Create Time: Sec=985860006 Nsec=557580952
Der Server antwortet wie erwartet.
Packet Number 13 TOK: ====( 202 bytes transmitted on interface tr0 )==== 17:18:27.910330888 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=180, ip_id=57471, ip_off=0 IP: ip_ttl=60, ip_sum=881a, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f59b7, th_ack=3ae543f5 TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60000, th_sum=116c, th_urp=0 RPC: Record Marker: Size = 136, Last Fragment (0x80000088) RPC: **CALL** XID=28458012 RPC: Program=100003 (NFS_PROGRAM) Version=3 Procedure=3 (NFSPROC3_LOOKUP) RPC: AUTH_UNIX RPC: Cred: RPC: Time=0x3ac35243 (Thu Mar 29 17:18:27 2001) RPC: Machine=cristina Uid=0 Gid=0 Group List Length=5 RPC: Groups= ( 0 4 7 1100 1061 ) NFS: Fhandle: NFS: 000a0007 00000003 000a0000 00023665 NFS: 563b0000 000a0000 00023665 563b0000 NFS: File Name: ein.file
Der Client kann es auch dieses Mal nicht fassen und fragt nocheinmal.
Packet Number 14 TOK: ====( 182 bytes received on interface tr0 )==== 17:18:27.912931564 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 10, frame control field = 40 TOK: [ src = 08:00:5a:0d:64:1d, dst = 00:06:29:b9:50:3f] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.2 > (nimmaster) IP: < DST = 172.16.1.3 > (cristina) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=160, ip_id=31886, ip_off=0 IP: ip_ttl=60, ip_sum=ec1f, ip_p = 6 (TCP) TCP: < source port=2049(nfs), destination port=58022 > TCP: th_seq=3ae543f5, th_ack=901f5a43 TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60032, th_sum=6238, th_urp=0 RPC: Record Marker: Size = 116, Last Fragment (0x80000074) RPC: **REPLY** XID=28458012 RPC: 100003(NFS_PROGRAM) 3(NFSPROC3_LOOKUP) RPC: Reply Stat: MSG_ACCEPTED RPC: Accepted Reply Stat: SUCCESS NFS: Stat: (2) Error- No such file or directory NFS: Directory attributes: NFS: Type=2(NFDIR) Mode=241777 Nlink=22 Uid=2 Gid=2 Rdev=(0,9) NFS: Size=6656 Used=8192 NFS: Fsid=655367 Fileid=2 NFS: Access Time: Sec=985879005 Nsec=846541052 NFS: Modify Time: Sec=985860006 Nsec=557580952 NFS: Create Time: Sec=985860006 Nsec=557580952
Der Server antwortet wie erwartet.
Packet Number 15 TOK: ====( 246 bytes transmitted on interface tr0 )==== 17:18:27.913353355 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=224, ip_id=57472, ip_off=0 IP: ip_ttl=60, ip_sum=87ed, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f5a43, th_ack=3ae5446d TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60000, th_sum=8e61, th_urp=0 RPC: Record Marker: Size = 180, Last Fragment (0x800000b4) RPC: **CALL** XID=28458013 RPC: Program=100003 (NFS_PROGRAM) Version=3 Procedure=8 (NFSPROC3_CREATE) RPC: AUTH_UNIX RPC: Cred: RPC: Time=0x3ac35243 (Thu Mar 29 17:18:27 2001) RPC: Machine=cristina Uid=0 Gid=0 Group List Length=5 RPC: Groups= ( 0 4 7 1100 1061 ) NFS: Fhandle: NFS: 000a0007 00000003 000a0000 00023665 NFS: 563b0000 000a0000 00023665 563b0000 NFS: File Name: ein.file NFS: Mode: 1 (GUARDED) NFS: Set Attr Args: NFS: Mode: (1) SET new_value: 0x81a4 NFS: Uid: (0) DONT_SET NFS: Gid: (1) SET new_value: 0x0000 NFS: Access Time: DONT_CHANGE (0) NFS: Modify Time: DONT_CHANGE (0)
Der Client ist jetzt sicher, daß der Server dieses File wirklich nicht kennt. Deshalb nutzt der Client jetzt die NFS Prozedur NFSPROC3_CREATE um die Datei anzulegen. Der Mode GUARDED weist den Server an, vor dem erzeugen der Datei erneut zu prüfen, ob es diese schon gibt. Dann wird der Mode des Files gesetzt.
Packet Number 16 TOK: ====( 62 bytes received on interface tr0 )==== 17:18:27.921343743 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 10, frame control field = 40 TOK: [ src = 08:00:5a:0d:64:1d, dst = 00:06:29:b9:50:3f] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.2 > (nimmaster) IP: < DST = 172.16.1.3 > (cristina) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=40, ip_id=31887, ip_off=0 IP: ip_ttl=60, ip_sum=ec96, ip_p = 6 (TCP) TCP: < source port=2049(nfs), destination port=58022 > TCP: th_seq=3ae5446d, th_ack=901f5afb TCP: th_off=5, flags< ACK > TCP: th_win=60032, th_sum=5a94, th_urp=0
Für diesen Schritt braucht der Server ein wenig länger. Daher kommt direkt ein ACK.
Packet Number 17 TOK: ====( 338 bytes received on interface tr0 )==== 17:18:27.943578936 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 10, frame control field = 40 TOK: [ src = 08:00:5a:0d:64:1d, dst = 00:06:29:b9:50:3f] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.2 > (nimmaster) IP: < DST = 172.16.1.3 > (cristina) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=316, ip_id=31888, ip_off=0 IP: ip_ttl=60, ip_sum=eb81, ip_p = 6 (TCP) TCP: < source port=2049(nfs), destination port=58022 > TCP: th_seq=3ae5446d, th_ack=901f5afb TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60032, th_sum=d8e5, th_urp=0 RPC: Record Marker: Size = 272, Last Fragment (0x80000110) RPC: **REPLY** XID=28458013 RPC: 100003(NFS_PROGRAM) 8(NFSPROC3_CREATE) RPC: Reply Stat: MSG_ACCEPTED RPC: Accepted Reply Stat: SUCCESS NFS: Stat: (0) NFS3_OK NFS: Fhandle: NFS: 000a0007 00000003 000a0000 009d3815 NFS: b6830000 000a0000 00023665 563b0000 NFS: File Attributes: NFS: Type=1(NFREG) Mode=100644 Nlink=1 Uid=4294967294 Gid=0 Rdev=(0,0) NFS: Size=0 Used=0 NFS: Fsid=655367 Fileid=157 NFS: Access Time: Sec=985879107 Nsec=916325713 NFS: Modify Time: Sec=985879107 Nsec=916325713 NFS: Create Time: Sec=985879107 Nsec=916325713 NFS: Weak Cache Consistency Data (before): NFS: Size: 0 NFS: Modify Time: Sec=985860006 Nsec=557580952 NFS: Create Time: Sec=985860006 Nsec=557580952 NFS: Weak Cache Consistency Data (after): NFS: Type=2(NFDIR) Mode=241777 Nlink=22 Uid=2 Gid=2 Rdev=(0,9) NFS: Size=6656 Used=8192 NFS: Fsid=655367 Fileid=2 NFS: Access Time: Sec=985879005 Nsec=846541052 NFS: Modify Time: Sec=985879107 Nsec=908510876 NFS: Create Time: Sec=985879107 Nsec=908510876
Der NFS-Server hat das File angelegt und übermittelt dem Client den Filehandle des neu angelegten Files, seine Attribute und das Ergebnis der Checks des Filesystemes.
Packet Number 18 TOK: ====( 294 bytes transmitted on interface tr0 )==== 17:18:27.946200253 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=272, ip_id=57473, ip_off=0 IP: ip_ttl=60, ip_sum=87bc, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f5afb, th_ack=3ae54581 TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60000, th_sum=9c17, th_urp=0 RPC: Record Marker: Size = 228, Last Fragment (0x800000e4) RPC: **CALL** XID=28458014 RPC: Program=100003 (NFS_PROGRAM) Version=3 Procedure=7 (NFSPROC3_WRITE) RPC: AUTH_UNIX RPC: Cred: RPC: Time=0x3ac35243 (Thu Mar 29 17:18:27 2001) RPC: Machine=cristina Uid=0 Gid=0 Group List Length=5 RPC: Groups= ( 0 4 7 1100 1061 ) NFS: Fhandle: NFS: 000a0007 00000003 000a0000 009d3815 NFS: b6830000 000a0000 00023665 563b0000 NFS: Write Args: Offset=0 Count=84 Stable=0 (UNSTABLE) NFS: 00000000 44617320 69737420 65696e20 54657374 |Das ist ein Test| NFS: 00000010 66696c65 2c206461 73206963 68200a76 |file, das ich .v| NFS: 00000020 6f6e2043 72697374 696e6120 61757320 |on Cristina aus | NFS: 00000030 61756620 4e696d6d 61737465 72200a61 |auf Nimmaster .a| NFS: 00000040 6e67656c 65677420 68616265 2e0a0a3b |ngelegt habe...;| NFS: 00000050 2d290a0a |-).. |
Jetzt will der Client auch direkt in das File schreiben. Dazu dient der RPC NFSPROC3_WRITE. Zum geschriebenen Text liefert der Client den Offset, also wo im File hingeschrieben werden soll und wieviel geschrieben werden soll. In diesem Fall fangen wir bei 0 Byte, also am Anfang des Files, an und schreiben 84 Byte. Dieser Zugriff ist als UNSTABLE qualifiziert, weil die Daten erst einmal in den Cache geschrieben werden.
Packet Number 19 TOK: ====( 226 bytes received on interface tr0 )==== 17:18:27.969634323 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 10, frame control field = 40 TOK: [ src = 08:00:5a:0d:64:1d, dst = 00:06:29:b9:50:3f] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.2 > (nimmaster) IP: < DST = 172.16.1.3 > (cristina) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=204, ip_id=31889, ip_off=0 IP: ip_ttl=60, ip_sum=ebf0, ip_p = 6 (TCP) TCP: < source port=2049(nfs), destination port=58022 > TCP: th_seq=3ae54581, th_ack=901f5be3 TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60032, th_sum=abe2, th_urp=0 RPC: Record Marker: Size = 160, Last Fragment (0x800000a0) RPC: **REPLY** XID=28458014 RPC: 100003(NFS_PROGRAM) 7(NFSPROC3_WRITE) RPC: Reply Stat: MSG_ACCEPTED RPC: Accepted Reply Stat: SUCCESS NFS: Stat: (0) NFS3_OK NFS: Weak Cache Consistency Data (before): NFS: Size: 0 NFS: Modify Time: Sec=985879107 Nsec=916325713 NFS: Create Time: Sec=985879107 Nsec=916325713 NFS: Weak Cache Consistency Data (after): NFS: Type=1(NFREG) Mode=100644 Nlink=1 Uid=4294967294 Gid=0 Rdev=(32768,9231) NFS: Size=84 Used=4096 NFS: Fsid=655367 Fileid=157 NFS: Access Time: Sec=985879107 Nsec=916325713 NFS: Modify Time: Sec=985879107 Nsec=968547468 NFS: Create Time: Sec=985879107 Nsec=968547468 NFS: Count=84 Stable=0 (UNSTABLE)
Der Server bestätigt den WRITE Request und sendet den Zustand des Cache vor und nach dem Schreibzugriff. Mein Text ist jetzt im Cache des Servers gespeichert; bezogen sind diese 84 Byte auf mein File, das durch seine Inode referenziert wird. Auch die Zeitstempel sind entsprechend angepasst.
Packet Number 20 TOK: ====( 202 bytes transmitted on interface tr0 )==== 17:18:27.970651461 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=180, ip_id=57474, ip_off=0 IP: ip_ttl=60, ip_sum=8817, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f5be3, th_ack=3ae54625 TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60000, th_sum=40d6, th_urp=0 RPC: Record Marker: Size = 136, Last Fragment (0x80000088) RPC: **CALL** XID=28458015 RPC: Program=100003 (NFS_PROGRAM) Version=3 Procedure=21 (NFSPROC3_COMMIT) RPC: AUTH_UNIX RPC: Cred: RPC: Time=0x3ac35243 (Thu Mar 29 17:18:27 2001) RPC: Machine=cristina Uid=0 Gid=0 Group List Length=5 RPC: Groups= ( 0 4 7 1100 1061 ) NFS: Fhandle: NFS: 000a0007 00000003 000a0000 009d3815 NFS: b6830000 000a0000 00023665 563b0000 NFS: Commit Args: Offset=0 Count=4096
Der User hat jetzt im vi den Text offensichtlich gespeichert, was das Client-NFS veranlasst, die Prozedur NFSPROC3_COMMIT aufzurufen. Der Filehandle wird übermittelt, mit der Aufforderung, den entsprechenden Block effektiv auf die Platte zu schreiben (auch wenn das File nur 84 Byte groß ist, wird ein Block geschrieben - daher der Offset 0 und ein Count von 4096 Byte, also ein Block).
Packet Number 21 TOK: ====( 218 bytes received on interface tr0 )==== 17:18:28.010281445 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 10, frame control field = 40 TOK: [ src = 08:00:5a:0d:64:1d, dst = 00:06:29:b9:50:3f] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.2 > (nimmaster) IP: < DST = 172.16.1.3 > (cristina) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=196, ip_id=31890, ip_off=0 IP: ip_ttl=60, ip_sum=ebf7, ip_p = 6 (TCP) TCP: < source port=2049(nfs), destination port=58022 > TCP: th_seq=3ae54625, th_ack=901f5c6f TCP: th_off=5, flags< PUSH | ACK > TCP: th_win=60032, th_sum=7612, th_urp=0 RPC: Record Marker: Size = 152, Last Fragment (0x80000098) RPC: **REPLY** XID=28458015 RPC: 100003(NFS_PROGRAM) 21(NFSPROC3_COMMIT) RPC: Reply Stat: MSG_ACCEPTED RPC: Accepted Reply Stat: SUCCESS NFS: Stat: (0) NFS3_OK NFS: Weak Cache Consistency Data (before): NFS: Size: 0 NFS: Modify Time: Sec=985879107 Nsec=968547468 NFS: Create Time: Sec=985879107 Nsec=968547468 NFS: Weak Cache Consistency Data (after): NFS: Type=1(NFREG) Mode=100644 Nlink=1 Uid=4294967294 Gid=0 Rdev=(0,9231) NFS: Size=84 Used=4096 NFS: Fsid=655367 Fileid=157 NFS: Access Time: Sec=985879107 Nsec=916325713 NFS: Modify Time: Sec=985879107 Nsec=968547468 NFS: Create Time: Sec=985879107 Nsec=968547468 NFS: Verifier: NFS: 00000000 20272291 3a9f97b6 | '".:... |
Der Server antwortet durch eine Wiederholung des Cache-Checks. Nach dem Schreiben der Daten ist der Cache stabil. Der Server sendet einen speziellen Cookie, hier Verifier genannt. Das ist eine Prüfsumme, anhand derer der Client merkt, falls der Server gebootet hat - dann wäre der Cookie ein anderer und der Client müßte zur Sicherheit das ganze File nochmal schreiben - zumindest bis zu der Stelle, wo der letzte sichere Commit bestätigt wurde.
Packet Number 22 TOK: ====( 62 bytes transmitted on interface tr0 )==== 17:18:28.068954270 TOK: 802.5 packet TOK: 802.5 MAC header: TOK: access control field = 0, frame control field = 40 TOK: [ src = 00:06:29:b9:50:3f, dst = 08:00:5a:0d:64:1d] TOK: 802.2 LLC header: TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP) IP: < SRC = 172.16.1.3 > (cristina) IP: < DST = 172.16.1.2 > (nimmaster) IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=40, ip_id=57475, ip_off=0 IP: ip_ttl=60, ip_sum=88a2, ip_p = 6 (TCP) TCP: < source port=58022, destination port=2049(nfs) > TCP: th_seq=901f5c6f, th_ack=3ae546c1 TCP: th_off=5, flags< ACK > TCP: th_win=60000, th_sum=56ec, th_urp=0
Ein letztes ACK des Client.
++++++ END OF REPORT ++++++ processed 22 packets Summary of RPC CALL packets reqid=28458015 prog=100003 vers=3 proc=21 caller=172.16.1.3 reqid=28458014 prog=100003 vers=3 proc=7 caller=172.16.1.3 reqid=28458013 prog=100003 vers=3 proc=8 caller=172.16.1.3 reqid=28458012 prog=100003 vers=3 proc=3 caller=172.16.1.3 reqid=28458011 prog=100003 vers=3 proc=3 caller=172.16.1.3 reqid=28458010 prog=100003 vers=3 proc=3 caller=172.16.1.3 reqid=28458009 prog=100003 vers=3 proc=3 caller=172.16.1.3 reqid=28458008 prog=100003 vers=3 proc=1 caller=172.16.1.3 reqid=28458007 prog=100003 vers=3 proc=1 caller=172.16.1.3
Der Vollständigkeit wegen die Liste der RPCs.
[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]
Copyright 2001-2021 by Orm Hager - Es gilt die GPL