1. ネットワークの基本:
概念: 1> ネットワーク プログラミングの本質はプロセス間の通信ですが、プロセスは異なるホストに分散されます。
2>クロスホスト送信のプロセスでは、通信を行う前に通信プロトコルを決定する必要があります。
1. OSI アーキテクチャ (強調)
7 層モデルを定義します。
2.TCPプロトコル
1) ネットワークインターフェースと物理層
3. IPアドレスの分割
4. ドット10進法
5.サブネットマスク
TCPとUDPのポート番号は互いに独立しています
2. クロスホスト送信
1. 小節の流れ(要点)
エンディアンネスは、コンピュータがマルチバイト整数のシーケンスを保存する方法です。
1>リトルエンディアンのバイトオーダー: 下位バイトはローカルアドレスに格納されます。
2>ビッグエンディアン: 上位バイトはローカルアドレスに格納されます。
3> コンピュータメモリの読み取り: すべてが下位アドレスから上位アドレスまで読み取られ、ビッグエンディアンとスモールエンディアンの変換を通じて読み取り結果が得られます。
4>char シングルバイト、float ダブル浮動小数点型、文字列以上のエンディアンステートメントはありません。
ビッグエンディアンとスモールエンディアンのストレージを確認しますか?
#include<stdio.h>
union node
{
unsigned int a;
char b;
}
int main(int argc, const char *argv[])
{
unsigned int a=0x87654321;
char *ptr=(char*)&a;
if(0x21==*ptr)
{
printf("小端\n");
}
else if(0x87==*ptr)
{
printf("大端\n");
}
2. ローカルバイトオーダーとネットワークバイトオーダー
ローカル バイト オーダー: ホスト バイト オーダー、ネットワーク バイト オーダー: ビッグ エンディアン バイト オーダーの使用を指定します。
クロスホスト送信中は、互換性の問題を避けるために、同じバイト順序、つまりネットワーク バイト順序を使用する必要があります。
3. エンディアン変換機能
htons htonl ホストのバイトオーダー ---> ネットワークのバイトオーダー
ntohs ntohl ネットワーク バイト オーダー ---> ホスト バイト オーダー
4. 構造の調整
コンパイラは、CPU 値サイクルを高速化するために構造を調整します。データの調整はオペレーティング システムにも関連しているため、異なるホストが異なる調整方法を使用すると、データは解析されません。そのため、送信時に構造をキャンセルする必要があります。ネットワーク上の構造と体の位置合わせ