TCP/IP

���󥿡��ͥåȥ��ɥ쥹(IP address)

RFC (Index) �ˤ�뵬�ʲ� 32 �ӥåȤο����ǹ������ͥåȥ�����ȥۥ�������ʬ�����롣
���饹A0�ͥå�ID(7bit)�ۥ���ID(24bit)
���饹B10�ͥå�ID(14bit)�ۥ���ID(16bit)
���饹C110�ͥå�ID(21bit)�ۥ���ID(8bit)
���饹D1110�ޥ�����㥹�ȥ��롼��ID(28bit)
���饹E11110����γ�ĥ�Τ����ͽ��(27bit)

���饹�ϰ�
A0.0.0.0 �� 127.255.255.255
B128.0.0.0 �� 191.255.255.255
C192.0.0.0 �� 223.255.255.255
D224.0,0,0 �� 239.255.255.255
E240.0.0.0 �� 247.255.255.255

���󥿡��ͥåȥ��ɥ쥹�γ�����Ƥ� InterNIC (Internet Network Information Center) ���층Ū�ˤ����ʤ�������(JPNIC)�ϡ��������ѥ��ե��å��ϰ� (APNIC)�β��˰��֤Ť����롣

���󥿡��ͥåȻ����ȿ������äˤ�äơ����饹C�Ǥ�­��ʤ������饹B�Ǥ�;���ȿ��Τ���� ���饹�쥹�ʥͥåȥ�����ɥ쥹�θ��դ��Ԥ��롣�ޤ��ץ��Х�����ˤ���ʣ���Υͥåȥ�����ɥ쥹�� ���󤹤뤳�Ȥ������ʤ��Ƥ��롣

TCP/IP�����

Ethernet/IEEE802.3 �ؤΥ��ץ��벽 (Encapsulation)
RFC894, RFC1042

802.3 MAC802.2 LLC802.2 SNAP
����
���ɥ쥹
ȯ����
���ɥ쥹
�ǡ���ĹDSAP
AA
SSAP
AA
Control
03
Original Code
00
�������ǡ���CRC
������
0800
IP�ǡ��������
������
0806
ARP�׵�/����PAD
������
0835
RARP�׵�/����PAD
Ethernet
����
���ɥ쥹
ȯ����
���ɥ쥹
�������ǡ���CRC
������
0800
IP�ǡ��������
������
0806
ARP�׵�/����PAD
������
0835
RARP�׵�/����PAD

���̤� IP ���ɥ쥹 ... �롼�ץХå����󥿡��ե����� 127.0.0.1 (localhost)

MTU ... Maximum Transfer Unit (RFC1191)

IP:���󥿡��ͥåȥץ��ȥ���

��������
IP Header ���
                                    
    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    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Example Internet Datagram Header
Version 4
IPv4
Type of service (TOS)
000dtrc0 d=�Ǿ��ٱ� t=���祹�롼�ץå� r=���翮���� c=�Ǿ�����������
Identification
�ǡ��������μ���
Flags & Fragmentation
�ǡ���������ʬ��
Time to Live (TTL)
�롼�����ͳ���뤿�Ӥ� 1���餵��롣�⤷ 0 �ˤʤ�ȡ��ǡ������˴����졢�����ˤ��Τ�ͤ����Τ���롣
Protocol
RFC1700

IP�롼�ƥ���

���֥ͥå�

���饹�ǵ��ꤵ�줿�ۥ��ȥ��ɥ쥹���֤�ʣ���Υͥåȥ����ʬ�䤷�ƻȤ���
���֥ͥåȥޥ���
�㡧������ؤ˳�����Ƥ�줿�ͥåȥ�� 133.97 (���饹�ϲ�����������)
ʬ�䤵�줿�ͥåȥ�����ɥ쥹 ... ����ʳزʤ� 133.97.54
���ΤȤ��Υ��֥ͥåȥޥ��� ... 255.255.255.0

ARP: Address Resolution Protocol

IP ���ɥ쥹����ĥۥ��Ȥ� Ethernet Address ��Ҥͤ�(broadcast)/������(unicast)
Type = 0806
0123
0123456789 0123456789 0123456789 01
Hardware Type (=1) Protocol Type (=0x0800)
Hardware Size (=6) Protocol Size (=4) Operation (�׵�=1,����=2)
����� Ethernet Address(1)
����� Ethernet Address(2) ����� IP Address (1)
����� IP Address (2) �������å� Ethernet Address(1)
�������å� Ethernet Address(2)
�������å� IP Address
RFC826

����(Proxy) ARP

PPP ��󥯤���ˤ���ޥ��������� ARP ������Ф���

arp ���ޥ��

���ץ����ȵ�ǽ(�ܤ����� man arp)
-a
ARP����å���Υǡ�����ɽ������
-d
ARP����å���Υǡ�����������
-s
�ǡ������ɲä���

RARP: Reverse Address Resolution Protocol

Ethernet Address ���� IP ���ɥ쥹��Ҥͤ�(broadcast)/������(unicast)
Xü����ǥ������쥹������ơ������ʤɡ�IP���ɥ쥹��ǥ������Υե������� ��¸�Ǥ��ʤ�(��ư�����ɤ߹���ʤ�)�����ƥ�Ǥ�ɬ�פˤʤ롣
Type = 0835
0123
0123456789 0123456789 0123456789 01
Hardware Type (=1) Protocol Type (=0x0800)
Hardware Size (=6) Protocol Size (=4) Operation (�׵�=3,����=4)
����� Ethernet Address(1)
����� Ethernet Address(2) ����� IP Address (1)
����� IP Address (2) �������å� Ethernet Address(1)
�������å� Ethernet Address(2)
�������å� IP Address
RFC903

/etc/ethers �ե�����

ICMP:���󥿡��ͥåȡ�����ȥ����롦��å��������ץ��ȥ���

ICMP (Internet Control Message Protocol)�� IP �ǡ��������˥��ץ��벽����롣
RFC792 IP�ץ��ȥ��� = 1
IP �ǡ��������
IP �إå�ICMP ��å�����
20 byte
0123
0123456789 0123456789 0123456789 01
Message Type Message Code Check Sum (����������)
:
(���Ƥϥ����פȥ����ɤˤ��)
:

ICMP ��å������Υ�����

�����������������Ȳ����顼
0 0������������
3������ã�Բ�
0�ͥåȥ����ã�Բ���
1�ۥ�����ã�Բ���
2�ץ��ȥ�����ã�Բ���
3�ݡ�����ã�Բ���
4�ե饰���ơ������ɬ�פ������ե饰���Ȥ��ƤϤ����ʤ����Ȥ򼨤��ӥåȤ����ꤵ��Ƥ�����
5�������롼�Ȥ�������
6����ͥåȥ����������
7����ۥ��Ȥ�������
8ȯ�����ۥ��Ȥ���Ω(���Ѥ���Ƥ��ʤ�)��
9����ͥåȥ��������Ū�˶ػߤ���Ƥ�����
10����ۥ��Ȥ�����Ū�˶ػߤ���Ƥ�����
11�����ӥ������פ˥ͥåȥ����ã�Բ���
12�����ӥ������פ˥ۥ�����ã�Բ���
13�ե��륿��󥰤��̿�������Ū�˶ػߤ���Ƥ�����
14�ۥ���ͥ���ȿ��
15���¾塢ͥ��������
40ȯ����������
5������쥯��
0�ͥåȥ���ؤΥ�����쥯����
1�ۥ��ȤؤΥ�����쥯����
2TOS, �ͥåȥ���ؤΥ�����쥯����
3TOS, �ۥ��ȤؤΥ�����쥯����
80�������׵���
90�롼������(advertise)��
100�롼������(request)��
11������
0ž�������¸����=0��
1�ꥢ����֥������¸����=0��
12�ѥ�᥿����
0IP�إå���������
1ɬ�פʥ��ץ����η�����
130�����ॹ������׵���
140�����ॹ����ױ�����
150����ե��᡼������׵�(Obsolete)��
160����ե��᡼��������(Obsolete)��
170���ɥ쥹�ޥ����׵���
180���ɥ쥹�ޥ���������

Ping �ץ������

ICMP �������׵�
0123
0123456789 0123456789 0123456789 01
Message Type = 0 �ޤ��� 8 Message Code = 0 Check Sum (��å���������)
���̻� ���������ֹ�
���ץ����Υǡ���
:

Traceroute �ץ������

UDP: User Datagram Protocol

��ñ�ʥȥ�󥹥ݡ����إץ��ȥ��롣��Ĥ� UDP�ǡ�������� �ϰ�Ĥ� IP �ǡ��������Ȥ��� ��������롣
<---- IP �ǡ�������� ---->
<---- UDP �ǡ�������� ---->
IP
�إå�
UDP
�إå�
UDP �ǡ���
20 ���� 8 ����
RFC768 IP �ץ��ȥ����ֹ� = 17

UDP �ϥǡ�������ब������ã���뤳�Ȥ��ݾڤ��ʤ����Ĥޤꡢ�������Τ���ץ��ȥ���ǤϤʤ��� �����������Ⱦ��ˤ�äƤϤ��Τ褦�ʥץ��ȥ��뤬ͭ���ʾ�礬���롣

UDP �إå�
0123
0123456789 0123456789 0123456789 01
16 bit ȯ�����ݡ����ֹ� 16 bit ����ݡ����ֹ�
16 bit UDP �ǡ���Ĺ 16 bit UDP �����å�����
�ǡ���
:
�ݡ����ֹ�: �����Υץ������ȼ�����Υץ��������̤��롣 �����С�¦�Ϥ��餫�������줿�ֹ��Ȥ������饤�����¦�Ϥ��ޤ��޻Ȥ��Ƥ��ʤ� �ֹ��Ȥ� (â�����̾� 1024 ���� 5000 �δ�)������򡢥��ե�����(û̿��)�ݡ��ȤȤ������Ȥ� ���롣

TCP: Transmission Control Protocol

RFC793 IP �ץ��ȥ��� = 6

TCP �ϥ��ͥ������ظ��Ρ��������Τ���Х��ȡ����ȥ꡼�ࡦ�����ӥ����󶡤��롣

<---- IP �ǡ�������� ---->
<---- TCP �������� ---->
IP
�إå�
TCP
�إå�
TCP �ǡ���
20 ���� 20 ����
TCP �إå�
0123
0123456789 0123456789 0123456789 01
16 bit ȯ�����ݡ����ֹ� 16 bit ����ݡ����ֹ�
32 bit ���������ֹ�
32 bit ��ǧ�����ֹ�
4 bit
�إå�Ĺ
ͽ�󤺤�
(6bit)
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
16 bit ������ɥ�������
16 bit TCP �����å����� 16 bit �۵ޥݥ���
���ץ����(�⤷�����)
:
�ǡ���
:
�����å�:IP ���ɥ쥹�ȥݡ����ֹ���Ȥ߹�碌��BSD�Υ饤�֥��̾�Ρ�
�����åȡ��ڥ�����ꡦ������Υ����åȤ��Ȥ߹�碌��

�ե饰���ӥå�

URG
�۵ޥݥ��󥿤�ͭ��
ACK
��ǧ�����ֹ椬ͭ��
PSH
������Ϥ��Υǡ������ǽ�ʸ¤���ޤ˥��ץꥱ���������Ϥ��ʤ���Фʤ�ʤ�
RST
���ͥ�������ꥻ�å�
SYN
���ͥ��������������뤿��˥��������ֹ��Ʊ��������
FIN
�����ϥǡ�����������λ����

TCP ���ͥ������γ�Ω�Ƚ�λ

���ͥ������γ�Ω

  1. ���饤����Ȥϡ���³�����������С��Υݡ����ֹ�ȥ��饤����Ȥν�����������ֹ� (���̥����å������������� 32bit unsigned int) ����ꤷ�� SYN �������Ȥ����롣
  2. �����С��ϡ������С��ν�����������ֹ��ޤ� SYN �������Ȥ����롣���κ� ���饤����ȤΥ��������ֹ�+1��ACK��Ĥ��롣
  3. ���饤����Ȥϥ����С����������Ƥ��� SYN ���Ф��ơ������С��Υ��������ֹ� +1 ��ACK�dz�ǧ�������֤���
���ͥ������λ�ץ��ȥ���
  1. ����(���̤ϥ��饤�����)���� FIN �����롣
  2. �⤦����(���̤ϥ����С�)���� FIN���Ф��� ACK �����롣
    �����ʳ��ǡ������פϥǡ�����������λ�������Ȥˤʤ롣��������TCP �Ͼ�̤Υ��ץꥱ������� �ؤ��Ф��ơ�����š��̿����󶡤��Ƥ���Τǡ�ɬ������֤⤦�����פ���Υǡ�����������λ���� �櫓�ǤϤʤ������ξ��֤� �ϡ��ա����������Ȥ�����
  3. �֤⤦�����פ��� FIN �����롣
  4. �������פ��� ack �����롣

TCP �������

���饤����Ȥ��̾������

  1. appl: �����ƥ��֡������ץ�; send: SYN
  2. recv: SYN,ACK; send: ACK
  3. appl: ��������; send: FIN
  4. recv: ACK; send: ��������ʤ�
  5. recv: FIN; send: ACK

�����С����̾������

  1. appl: �ѥå��֡������ץ�; send:��������ʤ�
  2. recv: SYN; send: SYN,ACK
  3. recv: ACK; send: ��������ʤ�
  4. recv: FIN; send: ACK
  5. appl: ��������; send: FIN
  6. recv: ACK; send: ��������ʤ�

TCP �Υǡ������ե���

���󥿥饯�ƥ�������

1ʸ���������Ǥ����1�ĤΥǡ����ѥ��åȤ�ȯ�����롣�ޤ���Rlogin �ξ��� ���饤����Ȥ������פ���ʸ���򥵡��С������������롣���Τ��ᡢ�ǡ����� ή��ϼ��Τ褦�ˤʤ롣
  1. ���饤����Ȥ����1ʸ���Υ�������
  2. �����С�����γ�ǧ����(ACK)
  3. �����С�����Υ�����
  4. ���饤����Ȥ���γ�ǧ����(ACK)
�ٱ� ACK ... ACK �򼡤Υǡ����˺ܤ��뤿�� ACK ���٤餻�롣�ٱ�ACK�����ޡ��� 200 msec ���� 500 msec ���١����Υǡ�����̵����С������ޡ��Ƿ���줿���� ��� ACK ��ñ�ȤΥѥ��åȤ�����Ф���
Nagle���르�ꥺ�� ... 1ʸ��1�ѥ��åȤϺ����ξ��ʤ���®��LAN�Ǥ����̵꤬�������٤������Τ���WAN �ʤɤǤ� ��Ψ��������ACK �����ޤ��������٤��ǡ�����ҤȤĤΥ������Ȥ˽��Ѥ��롣

�Х륯���ǡ������ե���

LAN��Ǽ����꤬��ʬ®���ޥ���ξ�� ... ������ä��ѥ��åȤ��®�˽����Ǥ��롣ACK �ϤҤȤĤ�����
�����꤬�٤���� ... ������äƤ����� ACK �����뤬������������ʤ��ǡ������Хåե��ˤ��ޤ뤿�� ������ɥ��������򾮤������롣������ɥ������� 0 �γ�ǧ������Ф������� �ǡ����Хåե��˽�ʬ�ʶ������Ǥ����顢������ɥ�����ACK�����롣
�������������� ... �ǽ�˼����꤫�鹭�𤵤줿������ɥ��������ǰ쵤�˥ǡ������®���������Ȥ���� �������®�����������������(congestion)��ȯ�����롣�����ǡ������� ���ԥ�����ɥ�(cwnd)�ȸƤФ�������¦�Υ�����ɥ����Ѱդ��롣 cwnd �Υ������Ϻǽ��1�ѥ��å�ʬ��ACK ���֤ä���뤿�Ӥˡ�2�ܤˤ���롣 ���󥿡��ͥåȤθ³���ã���������ǥѥ��åȤ��˴���ȯ�����뤿�� ACK ���֤ä���ʤ��ʤ롣�����ǡ�Ŭ�ڤ� cwnd �Υ���������ꤹ�뤳�Ȥ��Ǥ��롣
���롼�ץå� ... ����Ф����������Ȥ��֤äƤ��� ACK ��������ϩ������ˤɤ����¸�ߤǤ��뤫�� �ѥ��פΥ���ѥ��ƥ�(bit) = �Ӱ���(bit/sec) x ��������(sec) ... �Ӱ����ٱ���
�ܥȥ�ͥå� ... WAN ���������®�β���������Ȥ�