計算機による通信はパケット交換方式の採用によって異なったメーカーの計算機間でも通信が可能になり、その重要性はあらゆる部門で認識されるようになって来ました。
当初インターネットは軍事用の要求を満足するように開発されてきました。その後、政府関係や民間用にも使用の拡大が検討されましたが、そのネットワークの仕様がインターネットと同じであれば問題なく接続できますが、それでも、軍事用に比べ信頼性の不足や通信の混雑といった問題があり容易に接続できる状態ではありませんでした。更に、従来から使用されていた政府関連のネットワークや民間のネットワークの仕様をインターネットに合わせるのは困難なこともありました。そこで、ネットワーク間の相互接続ができるプロトコルが開発されました。
それはフロントエンド(クライアント)の計算機をインターネットに接続するプロトコル(TCP)との間で可変長のインターネットデータグラム(ヘッダとデータの組合わせ)をやり取りできる階層構造のインターネットプロトコル(IP)を作り、インターネットデータグラムが持っている発信元と宛先のアドレスが異なるネットワークに属しているものでも、そのインターネットデータグラムの分割と再構築をすることで(ゲートウエイによってネットワーク間の仕様の相違を相互調整する)多重ネットワークにおいて通信が達成できるようになりました。
TCPヘッダの構成
発信元ポート番号(Source Port)16 bits
TCP/IPで通信を行なうコンピュータはIPアドレスを持ち、複数のコンピュータと同時に通信する能力を持っているばあいには、他の計算機との通信用の接続口をポートと呼び、IPアドレスの補助アドレスとして0から65535までの「ポート番号」が付けられ、通信を行うときにはいずれかのポートに接続してから実施されますので、ここには発信元のホストのポート番号を指定します。
宛先ポート番号(Destination Port): 16 bits
宛先のホストのポート番号を指定します。
シーケンス番号(Sequence Number) 32 bits
データーグラムの順番を示す番号です。
応答確認番号(Acknowledgment Numbe) 32 bits
シーケンス番号に1が加えられた番号が設定されていて、受信側は受信したデータグラムのシーケンス番号に1を加えた応答確認のデータを受け取り、それが応答確認番号と一致していれば、正常な通信ができたことにして次のデータグラムを送信します。
ヘッダ長(Data Offset) 4 bits
ヘッダの長さを32ビットワードで表した数です。
予備(Reserved) 6 bits
将来使用予定の予備です。
コントロールビット(Control Bit) 6 bits(各1ビット)
URG: Urgent Pointer field significant
ACK: Acknowledgment field significant
PSH: Push Function
RST: Reset the connection
SYN: Synchronize sequence numbers
FIN: No more data from sender
ウインドウ(Window) 16 bits
データーグラムの連続送信が可能な場合に連続送信するデータグラムの数を設定します。送信側に1個の応答確認が届くと次のデータグラムを送信し、その応答確認を待たずに次のデータグラムを次々に指定された数だけ送り、受信側では応答確認を出す前に当直したデータグラムに対しては応答確認をせず、最後のデータグラムに対する応答確認を出した場合には、応答確認をしなかった途中の分は正常に受信したとみなされます。
チェックサム(Header Checksum) 16 bits
ヘッダの内容を16ビット単位で足し算した値を記入し、受信側で受信したヘッダの内容を同様に足し算して、チェックサムの値と比較して一致すれば正常に伝送されたことを示します。
緊急ポインタ(Urgent Pointer) 16 bits
利用者からの緊急コールに使用する数値(緊急ポインタ)を設定します。
オプション(Options) 可変
通常は使用しないのですが、ネットワークの診断や修復の確認等に使用されます。