情報ネットワーク - Home Page of Koji OKAMURA

トランスポート層
岡村耕二
http://okaweb.ec.kyushu-u.ac.jp/lectures/in-ng/
階層とプロトコル (OSI 参照モデル)
アプリケーション層
プロトコル
アプリケーション層
プレゼンテーション層
プロトコル
プレゼンテーション層
セッション層
プロトコル
セッション層
トランスポート層
プロトコル
トランスポート層
ネットワーク層
プロトコル
ネットワーク層
データリンク層
プロトコル
データリンク層
物理層
プロトコル
情報ネットワーク
物理層
2
7層の概略(IT辞典 http://e-words.jp)
•
アプリケーション層
– データ通信を利用した様々なサービスを人間や他のプログラムに提供する。
•
プレゼンテーション層
– 第5層から受け取ったデータをユーザが分かりやすい形式に変換したり、第7層から送
られてくるデータを通信に適した形式に変換したりする。
•
セッション層
– 通信プログラム同士がデータの送受信を行なうための仮想的な経路(コネクション)の
確立や解放を行なう。
•
トランスポート層
– 相手まで確実に効率よくデータを届けるためのデータ圧縮や誤り訂正、再送制御など
を行なう。
•
ネットワーク層
– 相手までデータを届けるための通信経路の選択や、通信経路内のアドレス(住所)の管
理を行なう。
•
データリンク層
– 通信相手との物理的な通信路を確保し、通信路を流れるデータのエラー検出などを行
なう。
•
物理層
– データを通信回線に送出するための電気的な変換や機械的な作業を受け持つ。ピン
の形状やケーブルの特性なども第1層で定められる。
情報ネットワーク
3
トランスポート層
• セッション層より上位では,個々の応用プロセスが処理を実
現するのに必要な情報が、メッセージ単位まで分割される。
トランスポート層以下は、このメッセージを通信相手の応用プ
ロセスまで、詳細な伝達手段を意識せずに、確実に送り届け
る機能を果たしている。
• トランスポート層では、両端のコンピュータシステム内で機能
してるアプリケーションプロセス間で、データ送信の保証をす
ることができる。データ通信の保証のために、通信エラーの
検出や回復の機能を持つ。また、上位層が要求するスルー
プットや伝送遅延などのサービス品質(QoS: Quality of
Service) を保証する。
• 代表的なプロトコルに、インターネットにおける誤りのないコ
ネクション型サービス TCP (Transmission Control
Protocol) や、動画像などを伝送するための効率の良いコネ
クションレス型サービス UDP (User Datagram Protocol) な
どがある。
情報ネットワーク
4
トランスポート
一度に複数の人としゃべったり
相手によってゆっくりしゃべったり、一度にたくさんしゃべったり
情報ネットワーク
5
典型的な構成(近距離)
アプリケーション
プレゼンテーション
セッション
トランスポート
ネットワーク
データリンク
物理
情報ネットワーク
6
典型的な構成(長距離)
アプリケーション
プレゼンテーション
セッション
トランスポート
ネットワーク
データリンク・物理
データリンク・物理
情報ネットワーク
7
トランスポート層
• プロセスとプロセスの通信
• TCP (Transmission Control Protocol )
– 信頼性があるが、速度が不定
• メール、WEBアクセス
• UDP (User Datagram Protocol)
– 信頼性がないが、 速度は一定
• マルチメディア通信
情報ネットワーク
8
トランスポート層
• IPアドレスだけでは識別子が足りない
– ホスト内でもっと細かく識別できる必要がある
• プロセス
• ウインドウ
– IP Address + Port = トランスポートアドレス
• ポート番号
– 16bit
• 特定のサービスを固定的に割り当てる
– 25: 電子メール
– 80: WWW
情報ネットワーク
9
ネットワーク層とトランスポート層
アプリケーション
プレゼンテーション
セッション
トランスポート
ネットワーク
データリンク・物理
データリンク・物理
情報ネットワーク
10
決められたポート番号
http://www.iana.org/assignments/port-numbers
The range for assigned ports managed by the IANA is 0-1023.
Port Assignments:
Keyword
Decimal Description
References
------------- -------------------0/tcp Reserved
0/udp Reserved
#
Jon Postel <[email protected]>
tcpmux
1/tcp TCP Port Service Multiplexer
tcpmux
1/udp TCP Port Service Multiplexer
#
Mark Lottor <[email protected]>
compressnet
2/tcp Management Utility
compressnet
2/udp Management Utility
compressnet
3/tcp Compression Process
compressnet
3/udp Compression Process
#
Bernie Volz <[email protected]>
情報ネットワーク
11
信頼性のある TCP 通信の実現と工夫
•
•
•
•
送信
Slow Start
Sliding Window
遅延時間に弱い
なかなかスピードが
出ない。
受信
送信
受信
スループット
時間
情報ネットワーク
12
通信アプリケーション
• 電子メール
– SMTP/POP/IMAP
• WWW
– HTTP/FTP
• DNS
– DNS
• VoD
– RTSP
• テレビ会議
– RTP
情報ネットワーク
13
トランスポート層通信プログラム(TCP)
int sock;
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(rport);
if((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0){
perror("TCPsocket");
return -1;
}
if(bind(sock, (struct sockaddr *)&server,sizeof(server)) < 0){
perror("TCPbind ");
return -1;
}
listen(sock, 5);
情報ネットワーク
14
トランスポート層通信プログラム(TCP)
int sock;
struct sockaddr_in server;
struct hostent *host;
int s_addr;
host = gethostbyname(dst);
memcpy((char *)&s_addr, (char *)host->h_addr, host->h_length);
bzero(&server,sizeof(struct sockaddr_in));
server.sin_family = AF_INET;
server.sin_port = htons(rport);
server.sin_addr.s_addr = s_addr;
if((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))<0){
perror("socket ");
return -1;
}
if(connect(sock,(struct sockaddr *)&server, sizeof(server))<0){
perror("connect");
return -1;
情報ネットワーク
}
15
トランスポート層通信プログラム(UDP)
sock=socket(AF_INET,SOCK_DGRAM,0);
saddr.sin_family
= AF_INET;
port = mport + i;
saddr.sin_port
= htons(port);
saddr.sin_addr.s_addr = s_addr;
if(connect(ssock, (struct sockaddr *)&saddr[i], sizeof(struct sockaddr_in))<0){
perror("connect");
return -1;
}
if (!setsockopt(ssock[i], SOL_SOCKET, SO_SNDBUF, (char *)&bufsize,
sizeof(bufsize)))
break;
}
情報ネットワーク
16
トランスポート層通信プログラム(TCP/UDP)
データの読み出し、書き込み方法は、共通
read(sock, buf, 1024);
write(sock, buf, 1024);
情報ネットワーク
17