
プロジェクトは、1337 Khouribga Coding Schoolで開発されました。
著者:@jamiafathiya&@Achrafelkhnissi& @abellaismail7
HTTPは、ハイパーテキストの転送に使用されるプロトコルであるHyperText Transfer Protocolの略です。これにより、プロトコルとは何ですか?ハイパーテキストとは何ですか?これに関連して、プロトコルは、コンピューターなどのさまざまなエンティティ間の情報の通信を可能にするルールのシステムです。 HyperTextは、他のテキスト、すなわちWebドキュメントへのハイパーリンクを含むコンピューター画面に表示されるテキストの古い用語です。したがって、HyperText転送プロトコルは、Webドキュメントをやり取りに転送するために使用される一連のルール、サーバー、およびブラウザを指します。
HTTPはセッションを許可し、保存された状態はブラウザとサーバー間で共有されます。訪問者がフォトギャラリーを閲覧している場合、ブラウザとサーバーは、Cookieの形で情報をやり取りすることにより、訪問者の場所に関する情報をシーケンス内の情報を交換できます。ページがリロードされると、ブラウザは訪問した最後の位置を示すクッキーをサーバーに送信し、視聴者がその時点から再開できるようにします。これは、HTTPはステートレスであるが、セッションレスではないことを意味します。
| 学期 | 意味 |
|---|---|
| ブラウザ | HTMLドキュメント間でアクセスしてナビゲートするために使用されるアプリケーション。 |
| ユーザーエージェント | ユーザーに代わって行動するアプリケーション、通常はブラウザです。 |
| TCP | World Wide Web、電子メール、FTP、およびリモート管理で使用される主要なインターネットプロトコルの1つであるTransmissing Controlプロトコルの略です。 |
| IP | インターネットプロトコルの略。 IPは、ネットワーク上のコンピューター間でデータを転送するために使用されます。インターネットに接続されているすべてのデバイスには、IPアドレスがあります。 |
| URL | 均一なリソースロケーターの略。ウェブ上のリソースを指すアドレス。 |
| DNS | ドメイン名サーバーの略。 DNSは、すべてのドメイン名URLをカタログ化し、サーバーのIPアドレスを指します。 |
| リソース | URLに従うときにサーバーで使用可能なファイルまたはファイル。 |
| サーバ | 何らかの形のデータストレージと共有アプリケーションを実行しているインターネット上のコンピューター、最も一般的にはWebサーバーアプリケーションです。 |
| プロキシ | クライアントとサーバーの間の中間者として機能するソフトウェアまたはハードウェアサービス。 |
| リクエスト応答ペア | クライアントとサーバーは、リクエスト応答ペアを使用してHTTPを介して通信します。リクエストが送信され、応答が返されます。 |
| ヘッダ | リクエストと応答では、HTTPヘッダーを使用して情報を行き来します。 |
| HTTP要求方法/動詞 | すべてのHTTP要求には、送信者がリソースで実行したいアクション(例えば、get、put、削除)を説明する方法を説明します。 |
| ステータス応答コード | サーバーがクライアントに返信した応答の種類を説明する100〜500の範囲の数値コード。 |
| キャッシュ | クライアントまたはサーバーにデータを保存してパフォーマンスを高速化する方法。 |
| ステートレス | HTTPはステートレスです。つまり、すべてのリクエストと応答が一意であり、状態は保存されません。 |
| クッキー | クライアントとサーバーの間を行き来した一連のデータがステートフルなセッションを作成しました。 |
| セッション | クライアントとサーバーは、情報をやり取りしてセッションを作成することにより、州に関する情報を共有できます。 |


| 方法 | 説明 | 成功 | 失敗 |
|---|---|---|---|
| 得る | 使用可能な場合は、指定されたリソースを取得します | 200 OK | 404見つかりません |
| 役職 | 新しいリソースを作成し、コレクションに追加します | 作成された201 | 401不正、409紛争、404は見つかりません |
| 置く | 既存のSingletonリソースベースまたはIDを更新します | 200 OK | 401不正、404は見つかりません、405メソッドは許可されていません |
| パッチ | 既存のシングルトンリソースベースまたはIDを変更します | 200 OK | 401不正、404は見つかりません、405メソッドは許可されていません |
| 消去 | SingletonリソースベースまたはIDを削除します(リソースのコレクションを削除できません) | 200 OK | 401不正、404は見つかりません |
| オプション | このリソースから利用可能なオプションを取得します | 200 OK | - |
| 頭 | リソースから応答ヘッダーだけを取得します | 200 OK | 404見つかりません |
このセクションには、Webサーバーを作成するために必要な機能の説明が含まれています。
int getaddrinfo ( const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); node :サーバーのホスト名またはIPアドレス。
nodeの場合、 NULLホストのIPアドレスが使用されます。 service :サーバーのポート番号。
serviceがNULLの場合、 hintsで要求されたサービスのデフォルトのポート番号が使用されます。 hints : resが指し示しているリストに返されたソケットアドレス構造を選択するための基準を指定するstruct addrinfoへのポインター。
hintsがNULLの場合、返されたリストには、すべてのソケットタイプ、指定されたノードのアドレスファミリがサポートするすべてのプロトコルファミリ、およびローカルホストのアドレスのソケットアドレスが含まれます。struct addrinfoの次のフィールドが使用されます。ai_family :住所ファミリ。次の定数は、 ai_familyフィールドに対して定義されています。AF_INET :IPv4インターネットプロトコルAF_INET6 :IPv6インターネットプロトコルAF_UNIX :ローカルコミュニケーションAF_UNSPEC :不特定ai_socktype :ソケットタイプ。次の定数は、 ai_socktypeフィールドに対して定義されています。SOCK_STREAM :シーケンス、信頼性、双方向、接続ベースのバイトストリームを提供します。バンド外データ送信メカニズムがサポートされる場合があります。SOCK_DGRAM :データグラム(固定最大長のコネクションレス、信頼性の低いメッセージ)をサポートします。SOCK_RAW :Raw Network Protocol Accessを提供します。SOCK_RDM :順序付けを保証しない信頼できるデータグラムレイヤーを提供します。SOCK_SEQPACKET :順序付けを保証しないシーケンスされたパケットレイヤーを提供します。ai_protocol :ソケットのプロトコル。次の定数は、 ai_protocolフィールドに対して定義されています。IPPROTO_TCP :伝送制御プロトコルIPPROTO_UDP :ユーザーデータグラムプロトコルIPPROTO_RAW :RAWプロトコルインターフェイスIPPROTO_IP :インターネットプロトコルIPPROTO_ICMP :インターネット制御メッセージプロトコルIPPROTO_IGMP :インターネットグループ管理プロトコルIPPROTO_IPV4 :インターネットプロトコルバージョン4IPPROTO_IPV6 :インターネットプロトコルバージョン6 res :ホストに関する応答情報を含む1つまたは複数のstruct addrinfo構造のリンクリストへのポインター。
返品値:成功すると、ゼロが返されます。エラー時に-1が返され、 errno適切に設定されます。
struct addrinfo :
struct addrinfo {
int ai_flags; // input flags
int ai_family; // socket protocol family
int ai_socktype; // socket type
int ai_protocol; // protocol for socket
socklen_t ai_addrlen; // socket address length
struct sockaddr *ai_addr; // socket address
char * ai_canonname; // service name
struct addrinfo *ai_next; // next item in the list
}; int socket ( int domain, int type, int protocol);domain :通信セマンティクスと使用するプロトコルファミリを指定する通信ドメイン。次の定数は、 domain引数に対して定義されています。AF_INET :IPv4インターネットプロトコルAF_INET6 :IPv6インターネットプロトコルAF_UNIX :ローカルコミュニケーションAF_UNSPEC :不特定type :通信セマンティクス。次の定数は、 type引数に対して定義されています。SOCK_STREAM :シーケンス、信頼性、双方向、接続ベースのバイトストリームを提供します。バンド外データ送信メカニズムがサポートされる場合があります。SOCK_DGRAM :データグラム(固定最大長のコネクションレス、信頼性の低いメッセージ)をサポートします。SOCK_RAW :Raw Network Protocol Accessを提供します。SOCK_RDM :順序付けを保証しない信頼できるデータグラムレイヤーを提供します。SOCK_SEQPACKET :順序付けを保証しないシーケンスされたパケットレイヤーを提供します。protocol :ソケットで使用するプロトコル。通常、特定のプロトコルファミリー内の特定のソケットタイプをサポートするための単一のプロトコルのみが存在します。この場合、 protocol 0として指定できます。 protocol引数に対して次の定数が定義されます。IPPROTO_TCP :伝送制御プロトコルIPPROTO_UDP :ユーザーデータグラムプロトコルIPPROTO_SCTP :ストリーム制御伝送プロトコルIPPROTO_TIPC :透明なプロセス間通信IPPROTO_RAW :RAW IPパケットerrno適切に設定されます。 int bind ( int sockfd, const struct sockaddr *addr, socklen_t addrlen);sockfd :バインドするソケットのファイル記述子。addr :ソケットにバインドされるアドレスを含むsockaddr構造へのポインター。アドレスの長さと形式は、ソケットのアドレスファミリによって異なります。addrlen : addr引数によって指されたアドレス構造のサイズ、バイト単位のサイズ。errno適切に設定されます。 int listen ( int sockfd, int backlog);sockfd :聴くソケットのファイル記述子。backlog : sockfdの保留中の接続のキューが成長する最大長。errno適切に設定されます。 int accept ( int sockfd, struct sockaddr *addr, socklen_t *addrlen);sockfd :受け入れるソケットのファイル記述子。addr : sockaddr構造へのポインター。この構造は、通信層に知られているように、ピアソケットのアドレスで満たされています。返されたアドレスの正確な形式は、ソケットのアドレスファミリによって決定されます。返されたアドレスが供給されているsockaddr構造に収まるには長すぎると、アドレスは切り捨てられます。addrlen :入力で供給されたsockaddr構造の長さを指定し、出力で保存されたアドレスの長さを指定するsocklen_tオブジェクトへのポインター。errno適切に設定されます。 ssize_t recv ( int sockfd, void *buf, size_t len, int flags);sockfd :受信するソケットのファイル記述子。buf :メッセージを保存するバッファーへのポインター。len : buf引数によって指されたバッファーのバイトの長さ。flags :メッセージ受信の種類を指定します。値は、論理的にゼロ以上の次の値によって形成されます。MSG_OOB :バンド外データを処理します。MSG_PEEK :着信メッセージを覗きます。MSG_WAITALL :ソケットがノンブロッキングでない限り、完全なリクエストを待ちます。MSG_DONTWAIT :ノンブロッキング操作を有効にします。操作がブロックされると、エラーがEAGAINまたはEWOULDBLOCKでエラーが失敗します。MSG_NOSIGNAL :誰もそれを読むことができないパイプに書き込むとき、 SIGPIPEを生成しないでください。recv() 0を返します。エラー時に-1が返され、 errnoが適切に設定されます。 ssize_t send ( int sockfd, const void *buf, size_t len, int flags);sockfd :送信されるソケットのファイル記述子。buf :送信するメッセージを含むバッファーへのポインター。len : buf引数によって指摘されたメッセージのバイトの長さ。MSG_OOB :バンド外データを処理します。MSG_DONTROUTE :バイパスルーティング、直接インターフェイスを使用します。MSG_DONTWAIT :ノンブロッキング操作を有効にします。操作がブロックされると、エラーがEAGAINまたはEWOULDBLOCKでエラーが失敗します。MSG_NOSIGNAL :誰もそれを読むことができないパイプに書き込むとき、 SIGPIPEを生成しないでください。errno適切に設定されます。 一般的な
HTTPリクエスト
HTTP応答
CGI
ストレステスト