--- ---復元コンテンツ始まります
OSI&TCP / IPモデル
明確にするためにtcp
udp
socket
http
websocket
、古典的な知って最初の関係OSI
7層モデルを、対応があるTCP/IP
4層モデル。
TCP / IPモデルはわずか4を有しているOSIモデルは、7つの層を含んでいます。彼らは、ネットワーク層、トランスポート層及びアプリケーション層に対応する機能を有するが、他の層は同じではないが。
それぞれ、我々は、一般的に底部7階を使用してネットワークデータ伝送、物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、アプリケーション層は、また、OSIの第一層と呼ば順次、第二層、⋯⋯第7層。
TCP / IPモデルなしの特殊なセッション層とプレゼンテーション層、アプリケーション層への符号化やセッション制御機能を完了するには含まれ、これら二つの層の発現に関連付けられます。また、TCP / IPもOSIモデルとデータリンク層物理層には、ネットワークアクセス層を含みます。
OSIモデルのネットワーク層ではコネクションとコネクション指向の2つのサービスをサポートし、トランスポート層は、接続指向サービスをサポートしています。インターネットモデルのTCP / IP層はコネクションレスサービス、トランスポート層の接続指向およびコネクションレスサポートの両方のサービスをサポートしています。
TCP /少ないレベルに起因するIP、およびこれは、より簡単なように見えて、インターネット(INTERNET)までの契約上の開発のためのデファクトスタンダードとして、それがネットワーク相互接続となっています。しかし、実際のネットワークは、OSIモデルに基づいて構築されていないがあり、唯一のOSI参照モデルは、広く理論として使用されています。
図から分かるように、tcp
udp
トランスポート層の仕事は、http
websocket
アプリケーション層で動作するが、socket
として理解することができ、7層モデルのいずれにも属していないsocket
隠れ層で作業し、アプリケーション層への中間トランスポート層。
数人の関係
socket
自体は、プロトコルではなく、トランスポート層TCP/UDP
プロトコルは、内部ユーザから隠され、カプセル化されてTCP/UDP
送信は、唯一のインタフェース(API)を提供して完了するために、プログラマに呼び出す方法socket
プログラミング。socket
インターフェース、我々は使用することができるTCP/UDP
プロトコルを。
オペレーティングシステムとインターフェースとの間の関係と同様の関係:ちょうどプロトコルスタック、操作機構のオペレーティングシステムとして、それは特定の実装であるだけでなく、外部のオペレータインタフェースを提供しなければなりません。これは、Win32プログラミング・インタフェースなどの標準プログラミング・インターフェースを提供するオペレーティングシステムのようである、しかし、プログラマが使用するウェブ開発、実行するために、インターフェイスを提供するプログラミング・インターフェースを。socket
TCP/UDP
TCP/IP
TCP/IP
Socket
そして、我々は通常のウェブサイトで使用訪れるhttp
プロトコルをベースにTCP
アプリケーション層プロトコルのプロトコルに。http
プロトコルの最も顕著な特徴は、それが非接続状態であるということです、クライアントは、サーバが要求した後、自動的に接続、解放されます、各要求に対する応答を返送する必要が送り「短い接続を。」
数人の間の関係の概要
以下のように要約することができ、いくつかの関係:
http
websocket
アプリケーション層プロトコルは、socket
インターフェイス呼び出すためtcp
udp
の通信網を達成するように、他のトランスポート層プロトコル。
tcp
udp
= " socket
=" http
websocket
概要
要約すると、我々は直接呼び出すようにプログラムされていないtcp
udp
が、彼らのパッケージインタフェースを介してsocket
通信します。我々は今、下を介してネットワーク上のほぼすべての通信は、されていることを言うことができますsocket
行われ、すべてがありますSocket
。
サプリメント。。。
TCPとUDPの違い
TCPはコネクション型であり、信頼性の高い伝送(データはデータの正確性を保証し、その順序を保証するために)、大量のデータ(ストリームモード)を送信するために、ゆっくりと、接続を確立することは、よりオーバヘッド(時間およびシステムリソース)を必要とします。
TCP是一种流模式的协议,是面向连接的,也就是说,在连接持续的过程中,Socket 中收到的数据都是由同一台主机发出的(劫持什么的不考虑),因此,知道保证数据是有序的到达就行了,至于每次读取多少数据不关心。
TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。
UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。
关于TCP是一种流模式的协议,UDP是一种数据报模式的协议,这里要说明一下,TCP是面向连接的,也就是说,在连接持续的过程中,socket 中收到的数据都是由同一台主机发出的(劫持什么的不考虑),因此,知道保证数据是有序的到达就行了,至于每次读取多少数据自己看着办。
而UDP是无连接的协议,也就是说,只要知道接收端的IP和端口,且网络是可达的,任何主机都可以向接收端发送数据。这时候,如果一次能读取超过一个报文的数据,则会乱套。比如,主机A向发送了报文P1,主机B发送了报文P2,如果能够读取超过一个报文的数据,那么就会将P1和P2的数据合并在了一 起,这样的数据是没有意义的。
TCP三次握手
所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在 Socket 编程中,客户端执行connect()时。将触发三次握手。
首先了解一下几个标志,SYN(synchronous),同步标志,ACK (Acknowledgement),即确认标志,seq应该是Sequence Number,序列号的意思,另外还有四次握手的fin,应该是final,表示结束标志。
最初のハンドシェーク:クライアントがTCPパケットのSYNフラグを送信し、クライアントの位置がサーバポート接続を望んで示し、初期シーケンス番号X、シーケンス番号(シーケンス番号)フィールドのヘッダーに格納されます。
第二のハンドシェイク:サーバーが確認パケット(ACK)応答を返します。すなわち、SYNフラグビットおよびACKフラグビットが同時に両方とも1であり、確認応答シーケンス番号(確認応答番号)、すなわち、の顧客のシーケンス番号+1に設定されている、X + 1。
第三のハンドシェーク:クライアントは再び1に肯定応答パケット(ACK)SYNフラグビットが0である、ACKフラグビットを送信します。シーケンス番号フィールド+ ACKがサーバから送信され、相互に送信フィールドに決定する。書き込ま入れ、データセグメントのシーケンス番号+ 1。
ソケットストリーム(SOCK_STREAM)およびデータグラムソケット(SOCK_DGRAM):2つの一般的なタイプはソケットがあります。ストリーミングは、接続指向TCPでのサービスアプリケーションの接続指向のソケットであり、データグラムソケットソケットはコネクションレスで、UDPに対応するコネクションレスサービスです。
---終わり---コンテンツを復元