Professional Documents
Culture Documents
Topics
IPv6
TCP
Java TCP Programming
Netprog 2002 TCP/IP
2
IPv6 availability
IPv6 Headers
4 for IPv4
IPv4 Header
1 byte
VERS
HL
1 byte
1 byte
Service
1 byte
Fragment Length
Datagram ID
FLAG
Fragment Offset
TTL
Protocol
Header Checksum
Source Address
Destination Address
Options (if any)
Data
6 for IPv6
IPv6 Header
1 byte
1 byte
VERS PRIO
Payload Length
1 byte
1 byte
Flow Label
Next Header
Hop Limit
Extension Headers
IPv6 Addresses
IPv6
Aggregate Global Unicast
Address
3
13
010 TLA ID
32
16
64
NLA ID
SLA ID
Interface ID
FFFF
IPv4 Address
80 bits
16 bits
32 bits
IPv4-Compatible IPv6
Address
IPv4-Compatible
IPv6 Address
80 bits of 0s followed by 16 bits of 0s,
followed by a 32 bit IPv4 Address:
0000 . . . 0000
0000
IPv4 Address
80 bits
16 bits
32 bits
Tunneling
(done automatically by kernel when
IPv4-Compatible IPv6 addresses used)
IPv6
Host
IPv6
Host
IPv4 Routers
IPv4 Datagram
IPv6 Datagram
Inet6Address class
TCP
Transmission Control Protocol
Connection-Oriented
Reliable
transmission of data is
acknowledged by the receiver.
If the sender does not receive
acknowledgement within a
specified amount of time, the
sender retransmits the data.
Netprog 2002 TCP/IP
22
Byte Stream
Buffering
Full Duplex
TCP Ports
TCP Segments
1 byte
1 byte
1 byte
Source Port
Destination Port
Sequence Number
Acknowledgment Number
offset Reser.
Control
Window
Checksum
Urgent Pointer
Options (if any)
Data
Netprog 2002 TCP/IP
28
TCP Lingo
More...
30
And more...
an acknowledgement.
RST: error connection must be reset.
SYN: synchronize Sequence Numbers
(setup)
FIN: polite connection termination.
Netprog 2002 TCP/IP
31
And more...
option)
Window: Every ACK includes a Window
field that tells the sender how many
bytes it can send before the receiver will
have to toss it away (due to fixed buffer
size).
Netprog 2002 TCP/IP
32
33
Client Starts
datagram accepted).
No payload! (Only TCP headers)
Server Response
Finally
Server
Client
SYN
ISN=X
2
SYN
ISN=Y ACK=X+1
ACK=Y+1
Why 3-Way?
Buffering
TCP Buffers
Send Buffers
ACKs
Termination
FIN
termination.
A FIN is sent, which means the
application is done sending data.
The FIN is ACKd.
The other end must now send a FIN.
That FIN must be ACKd.
Netprog 2002 TCP/IP
47
App2
App1
FIN
SN=X
...
ACK=X+1
FIN
SN=Y
ACK=Y+1
TCP Termination
1
TCP TIME_WAIT
50
socket.
Establishing an application-level
connection.
Sending/receiving data.
Terminating a connection.
3-way handshake
Accepting an incoming
connection.
Client Code
3-way handshake
Netprog 2002 TCP/IP
55
available.
Reading from a TCP socket may return
less than max bytes (whatever is
available).
You must be prepared to read data 1
byte at a time!
To succeed in relationships:
Classes
InetAddress
Socket
ServerSocket
DatagramSocket
DatagramPacket
UDP
Socket class
Socket Constructors
Socket Methods
void close();
InetAddress getInetAddress(); getpeername
InetAddress getLocalAddress(); getsockname
InputStream getInputStream();
OutputStream getOutputStream();
Socket I/O
ServerSocket Class
(TCP Passive Socket)
Constructors:
ServerSocket(int port);
ServerSocket(int port, int
backlog);
ServerSocket Methods
Socket accept();
void close();
InetAddress getInetAddress();
int getLocalPort();
throw IOException, SecurityException
Netprog 2002 TCP/IP
66