Πρωτόκολλα διαδικτύου: IPv4, IPv6, IPsec, ICMP
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Πρωτόκολλα διαδικτύου: TCP, UDP,
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Πρωτόκολλα διαδικτύου: Sockets API
(Σε παρένθεση σχετικά πρωτόκολλα του διαδικτύου)
(Σε παρένθεση σχετικά πρωτόκολλα του διαδικτύου)
URI = scheme ":" ["//" authority] path ["?" query] ["#" fragment]
index.html https://www.dmst.aueb.gr/dds/ https://www.google.com/search?q=AUEB https://www.aueb.gr/Hmerologio.pdf#page=3
Το πρωτόκολλο HTTP υποστηρίζει τις παρακάτω μεθόδους επικοινωνίας:
GET /dds/ HTTP/1.1 Host: www2.dmst.aueb.gr User-Agent: curl/7.71.1 Accept: */*
HTTP/1.1 200 OK Date: Sun, 08 Jan 2023 10:00:32 GMT Server: Apache/1.3.33 (Linux/RHEL) Content-Location: index.en.html Vary: negotiate,accept-language,accept-charset TCN: choice Last-Modified: Fri, 30 Dec 2022 21:03:52 GMT Accept-Ranges: bytes Content-Length: 22599 Content-Type: text/html Content-Language: en
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.MalformedURLException;
public class UrlRetriever {
public static void main(String[] args) {
if (args.length != 1) {
System.err.println("Usage: UrlRetriever URL");
System.exit(1);
}
URL url = null;
try {
// Make a request to the specified URL
url = new URL(args[0]);
} catch (MalformedURLException e) {
System.err.println("Invalid URL: " + e);
System.exit(1);
}
HttpURLConnection connection = null;
try {
connection = (HttpURLConnection)url.openConnection();
} catch (ClassCastException e) {
System.err.println("Specified protocol is not HTTP");
System.exit(1);
} catch (IOException e) {
System.err.println("Connection error: " + e);
System.exit(1);
}
try {
connection.setRequestMethod("GET");
// Get the response from the server
int status = connection.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
int c;
StringBuilder content = new StringBuilder();
while ((c = in.read()) != -1) {
content.append((char)c);
}
in.close();
// Print the response
System.out.println(content.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}
java UrlRetriever https://www.gutenberg.org/cache/epub/1342/pg1342.txt
curl 'https://aviationweather.gov/api/data/metar?ids=LGAV&hours=48'
curl -v -k "https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&titles=Moon&sites=enwiki" | jq .
curl -A "Mozilla/5.0" 'http://telematics.oasa.gr/api/?act=getBusLocation&p1=1822'
curl -LH "Accept: application/vnd.crossref.unixref+xml;q=1, application/rdf+json;q=0.5" https://doi.org/10.1126/science.169.3946.635
curl --request POST -H "Authorization: Bearer $ROBBIE_API_KEY" --url http://robbie.dmst.aueb.gr:50135/completion --header "Content-Type: application/json" --data '{ "prompt": "You are a helpful Assistant responding to User queries. User: Which city is the capital of Germany?\nAssistant: Berlin\nWhich city is the capital of Greece?"}'
curl https://api.openai.com/v1/engines/davinci/completions \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"prompt": "I can convert a String into an int in Java program by ",
"max_tokens": 50
}'
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class TimeServer {
static class GetHandler implements HttpHandler {
@Override
public void handle(HttpExchange exchange) throws IOException {
var calendar = Calendar.getInstance();
var dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss\n");
byte[] response = dateFormat.format(calendar.getTime()).getBytes();
// Set the response header and status code
exchange.sendResponseHeaders(200, response.length);
// Get the response body output stream
OutputStream responseBody = exchange.getResponseBody();
System.out.print(exchange.getRemoteAddress());
responseBody.write(response);
responseBody.close();
}
}
public static void main(String[] args) throws Exception {
// Create a server on port 8000
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/", new GetHandler()); // "GET /" handler
server.start(); // Start serving requests
}
}