\documentstyle[a4j,graphicx]{jarticle}
\title{TCP/IPとFreeBSDのネットワークコマンドについて}
\author{久保正明}
\date{April 19th 2002}
\begin{document}
\maketitle
\section{TCP/IP}
LANやインターネットなど，コンピュータをネットワークを介して接続し，通
信を実現するためには，通信方式（プロトコル）が必要である．通信を行うマ
シン同士で同じ通信プロトコルを用いることによって,それぞれのマシンのOS
や機種に関係なく通信を行うことが可能になる．現在最も一般
的に用いられているネットワークプロトコルに「TCP/IP（Transmission
Control Protocol/Internet Protocol）」がある．TCP/IPはUNIXが標準で実装
する通信プロトコルで，インターネットにおける通信プロトコルでもある．
TCP/IPでは，パケット交換方式でデータのやり取りを行っている．パケット交換方
式では，ネットワーク上の回線を有効に使用するためにデータを細かなパケット
に分割してからデータを転送する．TCPの役割としては,この分割されたパケッ
トが正しく送受されるように管理する．また，IPの中で最も重要な要素として
IPアドレスがある．
\subsection{IPアドレス}
IPアドレスとは，ネットワークにつながれた個々の計算機（ホスト）を識別す
るための番号を指す．現在の仕様のIPアドレスは8ビットずつ4つの組に分けれ
られた32ビットのバイナリデータから構成されている．それぞれの部分（8ビッ
ト）を10進数で間を点で区切って表現する．

\begin{verbatim}
	10000010 00000101 00001011 10110000
\end{verbatim}
であれば
\begin{verbatim}
	133.5.18.160
\end{verbatim}
と表現する．また,サブネットマスクというものがあり,以下の様に設定されてい
た場合，
\begin{verbatim}
	11111111 11111111 11111111 00000000
	255.255.255.0
\end{verbatim}
IPアドレスの上位24ビットがネットワーク番号，下位8ビットがホスト番号を
表す．上の例では，
\begin{description}  
 \item[133.5.18.]   ${\rightarrow}$ネットワーク番号
 \item[160]         ${\rightarrow}$ホスト番号
\end{description}
となり，このようにサブネットマスクが設定されていれば，そのネットワーク
内で表現できるIPアドレスの範囲は133.5.18.0${\sim}$133.5.18.255となる．
ただし,ホスト番号の部分のビットがすべて0の場合(133.5.18.0)とすべて１
の場合(133.5.18.255)は特殊なIPアドレスで，特定のマシンには使わない．

\begin{description}
 \item[133.5.18.0] ネットワークアドレス(ネットワーク自身を示す)%
 \item[133.5.18.255] ブロードキャストアドレス(ネットワークに属するすべて%
	    のマシンにパケットを送る)
\end{description}

\subsection{ホスト名とドメイン名}
ネットワークに接続されたコンピュータにIPアドレスを割り振ったとして，そ
れをいちいち覚え，入力するのは面倒くさい．そこで，もっと覚えやすい名前
(ホスト名）によって各マシンの識別を行う．さらに，全世界で一意性を保証
するためにホスト名にドメイン名（ネットワークの一つの基本単位につけられ
る名前）を組み合わせて利用する．たとえば，
\begin{verbatim}
minako.db.is.kyushu-u.ac.jp
\end{verbatim}
という名前に対しては，minakoがホスト名，db.is.kyushu-u.ac.jpがドメイン
名となる．ドメインの中でホスト名の一意性を保つことにより，世界規模での
ネットワークでホスト名の一意性を確保している．これは，DNS(Domain Name
Service)の機構を利用して行われる．牧之内研究室ではDNS
サーバはminako.db.is.kyushu-u.ac.jp(133.5.18.160)になっており,ホスト名と
IPアドレスの対応付けを行う．

また,上記の例では db,is,kyushu-u,ac,jpの5つのラベルがある．ドメイン名と
しては次の5つがある．
\begin{verbatim}
	db.is.kyushu-u.ac.jp
	is.kyushu-u.ac.jp
	kyushu-u.ac.jp
	ac.jp
	jp
\end{verbatim}
\subsection{サービス}
TCP/IP系のサービスには以下のようなものがある．
\begin{description}
 \item[タイミングサービス] 
	    ネットワークの同期をとる．NTP等．%
 \item[ファイルサービス] 
	    リモートのファイルシステムをローカルのファイル%
	    システムと同様にアクセスする機能を提供．NFS等%
 \item[ネームサービス] 
	    前述のDNS
\end{description}


\subsection{アプリケーション}
TCP/IP系のアプリケーションには以下のようなものがある．
\begin{description}
 \item[SMTP] 電子メール等,メッセージ転送を行う%
 \item[SSH] ホストのリモート端末の機能を提供する%
 \item[FTP] ファイル転送を行う%
 \item[HTTP] ハイパーテキストの操作を行う．
\end{description}

\section{ネットワーク関連コマンド}

\begin{itemize}
\item ping\\
  - ping ホスト名（またはIPアドレス）\\
  指定したホストからの応答を調べる．
\item ifconfig\\
  - ifconfig インターフェース名 \\
  指定したネットワークインターフェース情報の表示\\
  - ifconfig -a\\
  全てのネットワークインターフェースの状態を表示
\item traceroute\\
  - traceroute ホスト名(またはIPアドレス)\\
  指定したホストまでの中継経路を確認する
\item netstat\\
  マシンが認識しているネットワークに関する設定情報を表示
\item nslookup\\
  - nslookup ホスト名（またはIPアドレス）\\
  指定したホスト名とIPアドレスの組を表示
\item ftp\\
  指定したホストとの間でファイルのやり取りを行う．\\
  - ftp ホスト名（またはIPアドレス）\\
と入力し，接続が成功すると,ユーザ名とパスワードを聞かれるので入力する．\\
すると，\\
ftp${>}$\\
というプロンプトが表示され入力待ちになるので，ここでコマンドを入力する．
ls,cd,pwdなどのコマンドは使えるので,これによりファイルをチェックできる．
自分のマシンのファイルを調べる場合は，lls,lcdというコマンドを使う．

\begin{verbatim}
ftpのコマンドの例
\end{verbatim}
\begin{itemize}
\item open\\
  - open hostname(or IP address)\\
  指定したホストに接続する
\item get \\
  - get filename\\
  ファイルfilenameを自分のマシンにとってくる．
\item mget\\
  - mget (複数のファイル）\\
  複数のファイルを自分のマシンにとってくる．
\item put\\
  - put filename\\
  相手のマシンにファイルfilenameを送る．
\item mput\\
  - mput (複数のファイル）\\
  相手のマシンに複数のファイルを送る．
	  

\end{itemize}
\end{itemize}

\subsection{リモートホストへのログイン}

自分のマシン(ローカルホスト）から，別のマシン(リモートホスト）にログイ
ンしたり,リモートホストでコマンドを実行したりするためのコマンドとして,
rlogin(リモートログイン），rsh(リモートシェル），rcp(リモートコピー）
などがある．このようなコマンドは，パスワードやデータがそのままネットワー
ク上に流れるため，盗聴されるという危険性が伴う．

そこで，通信の暗号化によってその危険性を減らすのが，SSH(Secure Shell)
というプログラムで,SSHを使った通信では，パスワードやデータが暗号化され
た形で送られるので，途中で傍受される心配がない．また，暗号化されたデー
タは圧縮されて送られるので，転送時間を節約することができる．SSHでは，
rlogin,rsh,rcpのサービスと同様なことができるので，安全性の高い
ssh,sloginといったコマンドを使うようにする．

\subsubsection{SSHでのログイン法}

  - ssh ホスト名

と入力すれば,ユーザ名とパスワードを聞かれるので，自分のパスワードを入
力する．

また，

  - ssh -l ユーザ名 ホスト名

とすることで，指定したユーザでログインを行うことができる．
\end{document}