記事のディレクトリ
HTTP(ハイパーテキスト転送プロトコル)ハイパーテキスト転送プロトコル
ハイパーテキスト:
元のコンピュータだけの単純なテキスト形式、テキストはコンピュータの発達で、単純なテキスト形式を指して、そこにビデオ、写真、音楽および他のフォーマットがあって、ハイパーテキストは、元のテキストは、意味の拡張であります
トランスミッション:
送達媒体(例えば、同軸ケーブル、電話線、ケーブル)を送信(転送)と呼ばれるプロセスにおいて他の端末にコンピュータ端末によって送信されたバイナリデータパケットの原因であります
協定:
議定書は、条約や規範である、我々は規範を遵守する必要があり、唯一の情報交換の秩序ある行動に同じ仕様を使用し、一般的なプロトコルは以下のとおりです。SMTP
、TCP
、UDP
、FTP
ISO 7層のネットワークモデルとTCP / IPの4層モデルの概念
TCP/IP四层概念模型
ISOモデルは、IOSの単純化モデルに基づいて確立され、より広く実用的なアプリケーションでは、次の2つのモデル間の関係は次のとおりです。
ISO 7層ネットワークモデル
TCP / IPの4層の概念モデル
HTTPリクエストは、ネットワーク全体の要求を処理します
送信プロセス
場合と、アプリケーションTCP
データの送信は、データがプロトコルスタックに送られ、その後、個々の層まで、ネットワークを介してストリームに一連のビットとして扱います。受信されたデータの各レイヤは、いくつかのヘッダ情報を追加する必要があり、前記
レセプション
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用
在接收报文的过程中,报文的每一跳都会拆开MAC头,和封装入新的MAC头,具体的报文转发过程可以参考以下博文
为什么有了 MAC 层还要走 IP 层呢?
mac 地址就好像个人的身份证号,人的身份证号和人户口所在的城市,出生的日期有关,但是和人所在的位置没有关系,人是会移动的,知道一个人的身份证号,并不能找到它这个人,mac 地址类似,它是和设备的生产者,批次,日期之类的关联起来,知道一个设备的 mac,并不能在网络中将数据发送给它,除非它和发送方的在同一个网络内。所以要实现机器之间的通信,还需要有 ip 地址的概念,ip 地址表达的是当前机器在网络中的位置,类似于城市名+道路号+门牌号的概念。通过 ip 层的寻址,我们能知道按何种路径在全世界任意两台 Internet 上的的机器间传输数据。
IP协议和TCP/UDP协议
IP协议
TCP
和 UDP
是两种最为著名的传输层协议,他们都是使用 IP
作为网络层协议。IP协议提供了一组数据报文服务,每组分组报文都是由网络独立处理和分发,就像寄送快递包裹一样,为了实现这个功能,每个 IP 报文必须包含一个目的地址的字段;就像我们寄送快递都需要写明收件人信息,但是和我们寄送快递一样,也可能会出现包裹丢失问题,所以 IP 协议只是一个“尽力而为”的协议,在网络传输过程中,可能会发生报文丢失、报文顺序打乱,重复发送的情况。IP 协议层之上的传输层,提供了两种可以选择的协议,TCP
、UPD
。这两种协议都是建立在 IP 层所提供的服务基础上,根据应用程序的不同需求选择不同方式的传输;
TCP/IP
TCP/IP
协议你一定听过,TCP/IP
我们一般称之为协议簇,什么意思呢?就是 TCP/IP
协议簇中不仅仅只有 TCP
协议和 IP 协议,它是一系列网络通信协议的统称。而其中最核心的两个协议就是 TCP / IP
协议,其他的还有 UDP
、ICMP
、ARP
等等,共同构成了一个复杂但有层次的协议栈。
TCP
协议能够检测和恢复 IP
层提供的主机到主机的通信中可能发生的报文丢失、重复及其他错误。TCP
提供了一个可信赖的字节流通道,这样应用程序就不需要考虑这些问题。同时,TCP
协议是一种面向连接的协议,在使用 TCP
进行通信之前,两个应用程序之间需要建立一个 TCP
连接,而这个连接又涉及到两台电脑需要完成握手消息的交换。
TCP三次握手
由于 TCP
协议是一种可信的传输协议,所以在传输之前,需要通过三次握手建立一个连接,所谓的三次握手,就是在建立 TCP
链接时,需要客户端和服务端总共发送 3 个包来确认连接的建立
TCP四次挥手
四次挥手表示 TCP
断开连接的时候,需要客户端和服务端总共发送 4 个包以确认连接的断开;客户端或服务器均可主动发起挥手动作(因为 TCP 是一个全双工协议),在socket 编程中,任何一方执行 close() 操作即可产生挥手
为什么握手只需要3次,挥手需要四次
三次握手是因为因为当 Server 端收到 Client 端的 SYN
连接请求报文后,可以直接发送 SYN+ACK
报文。其中 ACK
报文是用来应答的,SYN
报文是用来同步的。但是关闭连
接时,当 Server 端收到 FIN
报文时,很可能并不会立即关闭 SOCKET
(因为可能还有消息没处理完),所以只能先回复一个 ACK
报文,告诉 Client 端,“你发的 FIN
报文我收到了”。只有等到我 Server 端所有的报文都发送完了,我才能发送 FIN
报文,因此不能一起发送。故需要四次挥手。
TCP数据传输过程的流量控制(滑动窗口)和拥塞控制
建立可靠连接以后,就开始进行数据传输了。在通信过程中,最重要的是数据包,也就是协议传输的数据。如果数据的传送与接收过程当中出现收方来不及接收的情况,这时就需要对发方进行控制以免数据丢失。利用滑动窗口机制可以很方便的在 TCP 连接上实现对发送方的流量控制。TCP 的窗口单位是字节,不是报文段,发送方的发送窗口不能超过接收方给出的接收窗口的数。
(1)滑动窗口协议
滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题;发送和接受方都会维护一个数据帧的序列,这个序列被称作窗口
(2)发送窗口
就是发送端允许连续发送的幀的序号表。发送端可以不等待应答而连续发送的最大幀数称为发送窗口的尺寸。
(3)接收窗口
接收方允许接收的帧的序号表,凡落在 接收窗口内的帧,接收方都必须处理,落在接收窗口外的帧被丢弃。接收方每次允许接收的幀数称为接收窗口的尺寸。
(4)滑动窗口调整过程(慢开始&线性增长)
UDP / IP
UDP
契約はしませんIP
修理に作ら間違った層が、の単純な拡張IP
、プロトコル「ベストエフォート」データパケットサービスの代わりにホスト間でのアプリケーションは、その使用の間の仕事に彼を可能にUDP
合意私たちは、オーダーの問題のうち、アカウントのパケット損失を考慮する必要があります。典型的なアプリケーションは、ライブです。
TCPとUDPの違い
TCP
これは、接続指向であるUDP
コネクションレスでありますUDP
プログラムの構造は、「ベストエフォート」の送信の唯一のHTTP拡張は比較的簡単ですTCP
ストリームは、バイト指向でUDP
報告されたデータに基づいていますTCP
データの精度を確認し、UDP
パケットロス月TCP
保証データの順序、UDP
保証するものではありません。
なぜTCPの送信は信頼性があるのですか?
- 信頼性の高い接続を確保するためのスリーウェイハンドシェイク・プロトコル
- フォー信頼性の高い伝送を確保するためのプロトコルを振っ
- 謝辞再送メカニズム
- 両国間の同期「確認番号のシーケンス番号+ +ウィンドウサイズ情報は」再送信、フロー制御の基礎確認された場合に接続を確立するためのスリーウェイハンドシェイク
- 送信処理、チェックサム検証が失敗した場合、パケットの損失や遅延、送信側再送
- パケット並べ替え
- 専用のTCPシーケンス番号SNフィールド、リオーダーのデータが提供されてもよいです
- 流量制御
- ウィンドウとタイマーを使用してください。TCPウィンドウは、当事者で送受信できるデータの最大量を指定します
- 輻輳制御
TCP輻輳制御アルゴリズムは、4つのコアコンポーネントで構成されます。- 「スロースタート」(スロースタート)
- 「輻輳回避」(輻輳回避)
- 「高速再送信」(高速再送信)
- 「クイックリカバリ」(高速リカバリ)