Transcript Week 10

Practical Session 10
•
•
•
•
•
•
•
•
•
•
IP (Internet Protocol) Address
TCP/IP Model
DNS
Ports
Sockets
TCP
UDP
Client-Server Model
Text Transfer
HTTP Protocol
Internet Protocol
• What is protocol?
– ‫ רשימת כללים לביצועה של פעילות מסוימת‬,‫נוהל‬
• What is internet protocol?
– A protocol that details how data is sent and received over the internet
network.
• What is Internet?
– It is a global system of interconnected computer networks.
– The internet is basically a network of networks.
• How a machine is identified?
– Every machine wishes to connect to the Internet, receives an IP address.
– IP address is a unique identifier for the machine.
What about Israel?
Bezeq International Line
Tamares Internet Line
IP Address
•
IPv4:
– 32bit of size
– Format: XXX.XXX.XXX.XXX
•
•
Where XXX is a number from 0 to 255
Each block is 8bit.
– Allows 232 unique addresses (≈ 4.3billion addresses).
– Examples:
•
•
•
•
192.115.80.66 – IP address of ynet
209.85.147.147 – IP address of google
132.72.41.239 – IP address of www.cs.bgu.ac.il
IPv6:
– 128bit of size
– Format:
•
XXXX.XXXX.XXXX.XXXX.XXXX.XXXX.XXXX.XXXX
–
Where each XXXX consist of a hexadecimal value. 0…9, A..F
– Examples:
•
•
2001:4860:0000:1001:0000:0000:0000:0068:– IPv6 of ipv6.google.com
2620:0000:1CFE:FACE:B00C:0000:0000:0003 – IPv6 of www.v6.facebook.com
– Allows 2128 unique addresses.
IP Addresses Utilization
Domain Name System
• DNS: Domain Name System
• DNS maps domain names to IPs.
• Example:
– Domain name: www.cs.bgu.ac.il
– IP: 132.72.41.239
• Why DNS?
– Machines understand numbers only.
– Humans find it hard to remember numbers.
– Thus, DNS was invented.
• DNS Servers are found at:
– Each ISP has its own DNS server. Normally two separate servers. (Primary DNS/Secondary DNS)
– There are 13 root servers in the world.
Root DNS Server Map
Communication Model
Tracing an Israeli Website
•
•
Tracing route to haaretz.co.il [192.118.72.27]
over a maximum of 30 hops:
•
•
•
•
•
•
•
•
•
•
•
1
2
3
4
5
6
7
8
9
10
11
•
Trace complete.
<1 ms <1 ms <1 ms BEZEQ [10.0.0.138] [My Router]
20 ms 19 ms 19 ms 213.57.0.7 [Yakum – Israel]
19 ms 19 ms 19 ms tbd.pt.mx-ipsla.con.hotnet.net.il [213.57.0.221] [Yakum – Israel]
21 ms 20 ms 20 ms ae7.50.hfa.mx-mx.con.hotnet.net.il [213.57.0.250] [Yakum – Israel]
91 ms 23 ms 23 ms 82.166.25.214.fix.netvision.net.il [82.166.25.214] [Haifa – Israel]
23 ms 22 ms 23 ms core1-edge1-clr.nta.nv.net.il [212.143.203.57] [Haifa – Israel]
23 ms 22 ms 23 ms coresw1-ptk-3-6-core1.nta.nv.net.il [212.143.203.85] [Haifa – Israel]
25 ms 25 ms 25 ms 212.143.29.193 [Haifa – Israel]
25 ms 26 ms 26 ms 212.143.29.196 [Haifa – Israel]
*
33 ms 33 ms 192.118.72.66 [Ramat Gan – Israel]
27 ms 27 ms 27 ms 192.118.72.27 [Ramat Gan – Israel]
Two Different ISPs– One Website
• Will the tracing results be the same?
Tracing heathcare.gov via HotNet
•
•
Tracing route to healthcare.gov [23.35.119.205]
over a maximum of 30 hops:
•
•
•
•
•
•
•
•
•
1 <1 ms
2 19 ms
3 20 ms
4 21 ms
5 71 ms
6 102 ms
7 91 ms
8 92 ms
9 98 ms
- USA]
•
Trace complete.
<1 ms
19 ms
19 ms
21 ms
71 ms
101 ms
229 ms
85 ms
90 ms
<1 ms BEZEQ [10.0.0.138] [My Router]
19 ms 213.57.0.7 [Tel Aviv - Israel]
19 ms tbd.pt.mx-ipsla.con.hotnet.net.il [213.57.0.221] [Tel Aviv - Israel]
21 ms ae0.hfa.mx-mx.con.hotnet.net.il [213.57.3.246] [Tel Aviv - Israel]
71 ms core-213-57-3-186.ptr.hotnet.net.il [213.57.3.186] [Tel Aviv - Israel]
99 ms r1fra1.core.init7.net [80.81.192.67] [Frankfurt - Germany]
95 ms r1par1.core.init7.net [77.109.140.149] [Zurich - Switzerland]
84 ms gw-akamai.par1.init7.net [77.109.134.254] [Thun - Switzerland]
96 ms a23-35-119-205.deploy.static.akamaitechnologies.com [23.35.119.205] [Cambridge
Tracing heathcare.gov via Golan Telecom
•
•
Tracing route to healthcare.gov [172.229.199.205]
over a maximum of 30 hops:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
1 1 ms 1 ms 2 ms 192.168.43.1 [GT Internal Network]
2 1477 ms 74 ms 100 ms 10.224.235.78 [GT Internal Network]
3 1838 ms 528 ms 61 ms 10.224.224.101 [GT Internal Network]
4 826 ms 75 ms 64 ms 10.224.224.102 [GT Internal Network]
5 38 ms 37 ms 36 ms 37.26.146.1 [Tel Aviv - Israel
6 34 ms 35 ms 38 ms bzq-218-111-9.red.bezeqint.net [81.218.111.9] [Tel Aviv - Israel
7 40 ms 44 ms 42 ms bzq-179-162-69.static.bezeqint.net [212.179.162.69] [Tel Aviv - Israel]
8 *
37 ms 39 ms bzq-219-189-94.cablep.bezeqint.net [62.219.189.94] [Tel Aviv - Israel]
9 93 ms 99 ms 89 ms 213.242.116.129 [France]
10 *
* 163 ms ae-15-15.ebr1.Frankfurt1.Level3.net [4.69.143.246] [Frankfurt - Germany]
11 124 ms 90 ms 318 ms ae-74-74.csw2.Frankfurt1.Level3.net [4.69.163.22] [Frankfurt - Germany]
12 135 ms 89 ms 114 ms ae-2-70.edge5.Frankfurt1.Level3.net [4.69.154.73] [Frankfurt - Germany]
13 284 ms 90 ms 317 ms xe-10-2-1.fra44.ip4.tinet.net [141.136.102.73] [France]
14 98 ms 100 ms 98 ms xe-9-0-0.ams20.ip4.tinet.net [89.149.183.98] [Amsterdam - Netherlands]
15 99 ms 109 ms 95 ms akamai-gw.ip4.tinet.net [141.136.99.6] [France]
16 220 ms 108 ms 106 ms a172-229-199-205.deploy.static.akamaitechnologies.com [172.229.199.205] [Cambridge - USA]
•
Trace complete.
Tracing an Australian address
•
Tracing route to neoaustralia.com.au [202.148.129.157]
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
•
Trace complete.
<1 ms <1 ms <1 ms BEZEQ [10.0.0.138] [My Router]
19 ms 19 ms 19 ms 213.57.0.7 [Yakum - Israel]
20 ms 19 ms 20 ms tbd.pt.mx-ipsla.con.hotnet.net.il [213.57.0.221] [Yakum - Israel]
41 ms 41 ms 42 ms ge3-0.catania4.cat.seabone.net [93.186.129.130] [Catania - Italy]
80 ms 80 ms 81 ms xe-11-1-0.franco31.fra.seabone.net [89.221.34.183] [Roma - Italy]
94 ms 95 ms 94 ms ffm-b12-link.telia.net [213.248.68.189] [Frankfurt Am Main - Germany]
95 ms 94 ms 94 ms ffm-bb1-link.telia.net [213.155.135.8] [Frankfurt Am Main - Germany]
188 ms 186 ms 185 ms nyk-bb1-link.telia.net [213.155.131.145] [New York (New York) - USA]
248 ms 251 ms 248 ms las-bb1-link.telia.net [80.91.251.252] [Las Vegas (Nevada)- USA]
257 ms 254 ms 262 ms las-b3-link.telia.net [213.155.130.127] [Las Vegas (Nevada)- USA]
250 ms 246 ms 250 ms singaporetelecom-ic-150846-las-b3.c.telia.net [80.239.167.194] [Los Angeles - California]
246 ms 350 ms 255 ms 203.208.171.141 [Singapore - Singapore]
409 ms 409 ms 400 ms 203.208.174.50 [Singapore - Singapore]
*
*
* Request timed out. [Firewall]
*
*
* Request timed out. [Firewall]
*
*
* Request timed out. [Firewall]
*
* 423 ms 59.154.57.190 [Pennant Hills (New South Wales) - Australia]
410 ms 418 ms 407 ms 59.154.57.188 [Pennant Hills (New South Wales) - Australia]
419 ms 410 ms 414 ms 119.225.61.94 [Brisbane (Queensland) - Australia]
420 ms 416 ms 420 ms po93.mls1.bne3.server-noc.com [203.147.255.189] [Wickham - Australia]
425 ms 407 ms 418 ms po93.mls1.bne3.server-noc.com [203.147.255.189] [Wickham - Australia]
409 ms 420 ms 421 ms www.bathurstmowerland.com [202.148.129.157] [Wickham - Australia]
TCP/IP Model
•
Application Layer
–
–
Communication between applications
Protocols:
•
•
•
•
•
Transport Layer
–
–
Communication between end-to-end machines.
Protocols:
•
•
•
•
Routing: Handles the way packets are sent from end machine A to end machine B.
Decides which path the packet needs to take in order to be received at destination.
•
IP – Internet Protocol
Link Layer (Network Access Layer)
–
–
Move packets between the interfaces of two different hosts on the same link.
Protocol:
•
•
TCP – Transmission Control Protocol
UDP – User Datagram Protocol
SCTP – Stream Control Transfer Protocol
Internet Layer
–
–
•
FTP – File Transfer Protocol
SMTP – Simple Mail Transfer Protocol
HTTP – Hyper Text Transfer Protocol
BitTorrent – Peer-to-Peer file sharing protocol
MAC – Media Access Control.
Physical Layer
–
–
The pure hardware in any network infrastructure through it we send our bits of data.
The Ethernet cables, communication satellites, copper lines, etc.
TCP in TCP/IP
• TCP/IP is the communication protocol for
communication between computers on the
Internet.
• TCP/IP stands for Transmission Control Protocol /
Internet Protocol.
• Using this model we can transfer data between
two different machines.
• Examples of TCP uses:
–
–
–
–
Web surfing using browsers.
File download using the browser.
Sending emails.
FTP Download
TCP in TCP/IP
• TCP is used for communication between applications.
• If application A wants to communicate with application B via TCP:
–
–
–
–
A sends a communication request, called “handshake”.
This request must be sent to an exact address.
B accepts request.
After the handshake between the two applications, TCP will set up a full-duplex
communication between the two applications.
– Then both ends can send and receive data.
– This communication stays until one of the application closes the connection.
• Full-duplex communication:
– A can send to B.
– B can send to A.
Ports
• What are ports?
– Think of them as entry/exit points to/from a machine.
• Why ports?
– Allows more than one service to be accessible at the same time on one machine.
• Each port has a unique number:
• HTTP uses port 80. (as default)
• FTP uses port 21. (as default)
• There are 64K (65536) ports to use. (from 1 to 65536)
• Example:
– http://15.216.110.22:80/
– ftp://15.216.110.22:21/
Sockets
• What?
– A socket is an endpoint for communication between two machines.
– An instance can be created by the application, and used in order transfer
and receive data.
• Socket Types:
– Stream Sockets – TCP
– Datagram Sockets – UDP
– Raw Sockets – ICMP (access to a lower layer protocol like IP)
• Java API:
– http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html
Stream Sockets
• Stream sockets are used by the Transmission
Control Protocol (TCP).
• Definition:
– Client Socket:
• Socket clientSocket = new Socket(InetAddress address, int port);
– Address – server IP address.
– Port – port of server.
– Server Socket:
• Socket serverSocket = new ServerSocket(int port);
– Port – port of server.
• Socket clientConnection = serverSocket.accept();
– Waits for a new connection.
– Returns a Socket object once connected.
– Using this new object, communication is done.
Stream Sockets
1. Server listens at port 4444
3. the server gets a new socket bound
to the same local port and also has its
remote endpoint set to the address
and port of the client.
It needs a new socket so that it can
continue to listen to the original
socket for connection requests while
tending to the needs of the connected
client.
2. Client connects to the server
using a socket with the host/ip
and the port of the server.
- A local port is assigned that
will be used to connect to the
client.
Notes on Sockets
• Can create more than one client socket with the same host and
port!
• Can create only one ServerSocket with a certain port!
• Cannot create a ServerSocket on a local port used by another
socket.
Transmission Control Protocol
• TCP:
– Connection oriented protocol; a connection must be established
between two sockets before transferring data:
• Socket A listens to a port.
• Socket B connects to socket A using IP:PORT.
– Data can be sent in either way.
– Connection is closed.
• TCP Properties:
– Advantages:
• Data sent is guaranteed to be correct.
• Data sent is guaranteed to be sent in full.
• Data sent is guaranteed to be received in same order sent.
– Disadvantages:
• Latency (lag) introduced by waiting for acknowledgements.
• Overhead makes the transmission slower.
• Overhead: All the extra data sent by the communication protocol,
excluding the real data we wish to send.
TCP Frame Structure
TCP 3-WAY HANDSHAKE DIAGRAM
•
•
•
•
•
•
Host A sends a TCP SYNchronize packet to Host B
Host B receives A's SYN
Host B sends a SYNchronize-ACKnowledgement
Host A receives B's SYN-ACK
Host A sends ACKnowledge
Host B receives ACK.
TCP socket connection is ESTABLISHED.
UDP- User Datagram Protocol
• UDP:
– No connection between sockets required!
– Application A can send any data at any time without prior notification.
• UDP Properties:
– No guarantee on packet order.
– No guarantee if packet is received.
– If a packet received is corrupt, then it is discarded.
• UDP Advantages:
– Great for streaming live media (video, music).
– Faster transmission due to smaller overhead.
• UDP is used by:
– DNS
– DHCP
– Any Time-sensitive application.
UDP Frame Structure
The Client-Server Model
• A widely used model consisting of:
– Server
– Clients
• Server:
– Provides a service of some kind.
– Examples: Web Server, FTP Server, DNS Server
• Clients:
– Connect to the server requesting the service.
• Establishing connection:
– The Server awaits connections. (listens to a port)
– The server reacts to clients requests.
• Example:
– SimpleLinePrinter
(TCP server-client: server accepts one client receives msgs from it- “bye”
for termination)
Running netstat –p when both the client and server are on the same machine should show:
Text Transfer In Java
• Reading data from Socket:
•
Reader Object:
•
•
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()), “UTF-8”);
Reading Line:
•
String line = bufferedReader.readLine();
• Writing data to socket:
•
Writer Object:
•
•
PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8"), true);
Writing Line:
•
•
printWriter.print(“my text message”);
printWriter.flush();
http://docs.oracle.com/javase/tutorial/networking/sockets/readingWriting.html
Text Encoding
• Different computers may use different symbol representations. Text sent
might be received and understood differently.
• Example:
– Sending text from Linux Windows operating systems.
• New line in Linux: \n
• New line in Windows: \r\n
• In order to ensure that the text sent is received correctly, both clients and
server need to agree on text format.
• Encoding formats example:
– UTF-8
– ANSI
– UCS-2
Examples
• in = new BufferedReader(new InputStreamReader(clientSocket
.getInputStream(),"UTF-8"));
• out = new PrintWriter(new OutputStreamWriter(clientSocket.g
etOutputStream(), "UTF-8"), true);
• Code Examples:
– 02_Echo(server sends back the messages that the client sends –
UTF-8 format)
Protocol Interface
• We don’t want to hold the implementation of a protocol inside the server’s
code.
• Protocol:
– How to send messages
– How to end transmission etc.
• define an interface ServerProtocol
– process() - for processing the received message and construct a response
message
– isEnd() - identifies the end of a protocol
• Example:
– 03_ProtocolInterface (server sends messages and checks for end of transmission
using a protocol- sends numbered messages).
HTTP
• Hypertext Transfer Protocol
• HTTP is the protocol to exchange or transfer hypertext.
• Hypertext is text with references (hyperlinks) to other text that
the reader can immediately access.
• Create a socket to the host with port 80 and sent the HTTP
request through it.
HTTP - Request
• An HTTP request is defined as a header, followed by an empty
line and an optional body.
• The request includes the protocol version.
• Example:
– Get Request:
GET /index.html HTTP/1.1
Host: www.example.com
HTTP Response
• An HTTP response is defined as a header, followed by an
empty line and an optional body.
• Example:
– 04_http (send a get request using HTTP protocol)
Network console tools
• ipconfig (Microsoft Windows console application) – displays all current TCP/IP
network configuration values.
• ifconfig (Unix-like console application) - configure, control, and query TCP/IP
network interface parameters.
• ping (Unix-like & Windows) - utility used to test whether a particular host is
reachable across an Internet Protocol (IP) network and to measure the roundtrip time for packets sent from the local host to a destination computer.
• Telnet client (Unix-like & Windows) - Telnet is a network protocol used to provide
a bidirectional interactive communications facility. Typically, telnet provides
access to a command-line interface on a remote host via a virtual terminal
connection. Putty can be used on recent Windows-es which don't have telnet.
• cURL is a computer software project providing a library and command-line tool
for transferring data using various protocols.