2019-08-24 TSG 初心者分科会 Web特講 第1回
@hakatashi
第1回 Webの仕組みを理解する
学ばないといけない技術領域が広い、かつ多種にわたる
どの技術一つとっても激重で
極めるのに時間がかかる
今回の講義 (第1回) は、そんな広大なWebの世界を
ひととおり眺めて、そもそも
Webサイトがどういう仕組みで動いているのかを
大雑把に理解することが目的
第10回 IPパケットの構造とIPフラグメンテーション (2/3):基礎から学ぶWindowsネットワーク - @IT
https://www.atmarkit.co.jp/ait/articles/0304/04/news001_2.html
16. TCP/IP - TCP・UDPセグメント - インターネット技術講座
https://sites.google.com/site/networkinglecture/1_internet/16_tcpip03
ASCII.jp:「スリーウェイハンドシェイク」の手順、わかっていますか?|ネットワークがクイズでわかる! 誰が正解?「TCP/IP」
https://ascii.jp/elem/000/000/619/619702/
ASCII.jp:Ethernetのフレーム構造を理解しよう (1/3)|入門Ethernet
https://ascii.jp/elem/000/000/427/427324/
記憶術で覚えるイーサネット②イーサネットフレーム、MACアドレス – ランスルネット
http://www.runsurunet.com/2017/05/17/%E2%91%A1%E3%82%A4%E3%83%BC%E3%82%B5%E3%83%8D%E3%83%83%E3%83%88%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0/
OSI参照モデル(おーえすあいさんしょうもでる)とは - コトバンク
https://kotobank.jp/word/OSI%E5%8F%82%E7%85%A7%E3%83%A2%E3%83%87%E3%83%AB-1905
をもとに作成
イーサネット通信
IP通信
TCP/UDP通信
本当にやりたい通信
HTML is <big>Sugoi!</big>
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Sun, 25 Aug 2019 00:45:01 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 8706
Access-Control-Allow-Origin: *
Cache-Control: max-age=600
X-Proxy-Cache: MISS
X-GitHub-Request-Id: CB16:702F:2AE3EB:2E3810:5D60AA86
Accept-Ranges: bytes
HTML is <big>Sugoi!</big>
GET /hakatashi/sugoi.html HTTP/1.1
Host: tsg.ne.jp
User-Agent: curl/7.55.1
Accept: */*
リクエスト
レスポンス
これらが実際には
先ほど説明したTCP/IPフレームの内部で
伝達される
HTML is <big>Sugoi!</big>
body {
background-color: red;
}
big {
display: inline-block;
transform: rotate(-30deg);
}
HTML
CSS
document.querySelector('big').onclick = function() {
this.textContent = [
'sugoi!', 'amazing!', 'happy!', 'ojigineko!',
][Math.floor(Math.random() * 3)];
}
JavaScript
#include <sys/types.h>
#include <sys/socket.h>
int main() {
struct sockaddr_in clientaddr;
socklen_t addrlen;
int listenfd = socket(AF_INET, SOCK_STREAM, 0);
listen(listenfd, 1000000)
int client = accept(listenfd, (struct sockaddr *)&clientaddr, &addrlen);
send(client, "HTTP/1.1 200 OK\r\n\r\nHello!", 21);
shutdown(client, SHUT_WR);
close(client);
}
<?php session_start(); ?>
<!DOCTYPE html>
<title>PHP Test</title>
<?php if (date('D') == Fri) { ?>
<p>Happy Friday!!!!!</p>
<?php } else { ?>
<p>I'm unhappy</p>
<?php } ?>
金曜日なら「Happy Friday」と表示するWebサイトを実装したPHPコード