基本的なコンピュータの問題

最近、いくつかの記事にマイクロ手紙を読んで、記事の内容は、一般的に継続的に更新され、以下に要約します。

1.コンピュータネットワーク

コンピュータが別のコンピュータにデータを送信する方法1.?

リファレンスソース

解答へのネットワーク通信に基づいファイブモデル:

  1. 物理層:物理層は、ハイとローを透過したコンピュータ周波数の電気信号との間に接続された二つのコンピュータまでの原因である0,1

  2. :のデータリンク層 0,1を転送するルールの実際の意味は、0,1の代表その電気信号にコンピュータによって認識

    • イーサネットプロトコル:ヘッダとデータからなる電気信号のセットはフレームと呼ばれるデータパケット。ヘッダ長が18バイトに固定されて、データ部の長さは、フレームのサイズは、典型的には、伝送フレームに分割するには大きすぎる64から1518バイトであり、必ずしもありません。その前に、コンピュータとコンピュータの間を区別するためにどのように?コンセプトのユニークなMAC識別子を導入する次

    • MACアドレス:各カードは、MACアドレスと呼ばれる固有のアドレスを持っています。それは、48バイトで構成され、固有の識別

    • ブロードキャストとARPプロトコル:

      • ARP:アドレス革命プロトコル、ARP
      • 唯一同じサブネットにブロードキャスト、サブネット内の受信者のホストのMACアドレスを含むデータパケットを送信者として記載し、あれば、そのコントラストうちブロードキャストメッセージ、パケットのMACアドレス及びMACを受信しました私は、そうでない場合は破棄され、パケットを受信し、その後、探していました。
  3. ネットワーク層は:サブネットの形式のデータの同報送信、そうでない場合は、サブネット内の場合、データはその結果ゲートウェイ転送、ゲートウェイに送信されます

    1. IPプロトコル:
    2. 〜255.255.255.255 0.0.0.0
      2.ネットワークとホスト部分
      3. 2判断IPアドレスがサブネットですが、また、サブネットマスクを知っておく必要があるかどうか、ホストビットはすべて1です
    3. ARPプロトコル:
      1. MACアドレスは、他のホストのARPプロトコルにより得ることができます
      2. ARPプロトコルがしたいに対応するMACアドレスを取得したIPアドレスを含む、サブネットブロードキャストの形で他のすべてのホストにパケットを送信します。相手がパケット、および独自のIPアドレスアウトIPアドレスを受信し、同じ場合は、その当事者に返信するために彼のIPアドレスを入れた後、そうでない場合は廃棄され得ることを望んでいます。
    4. DNSサーバー:
      1. 通常、我々は、Webサイトを参照してください。サイトのドメイン名を入力して、直接ではなく、サイトのIPアドレスを入力します。
      2. DNSサーバは、対応するIPアドレスのため、当社のWebサイトのドメイン名解決にアクセスすることが可能です
    5. ネットワーク層:私たちは、同じサブネットに属しているかどうかを判断する場合には、ネットワーク内のコンピュータを見つけることができるようにしましょう。
  4. トランスポート層:確立するポートをするポート接続。プロセスを受信するための具体的なプログラムのために。

    1. 一般的なTCPおよびUDPプロトコル
  5. アプリケーション層:

    1. 指定されたデータ形式、ルール、良いゴー解釈レンダリングを受けます。

2.コンピュータのIPは来る方法ですか?

リファレンスソース

  1. DHCP(動的ホスト構成プロトコル)動的ホスト構成プロトコル
  2. IPクライアント要求
    1. クライアントは、他の人が、彼はIPアドレスを要求することであることを知らせるために、宛先ポートが67で、送信先IPブロードキャストが255.255.255.255で、ブロードキャストを送信し、クライアントの送信元IPが0.0.0.0に設定され、送信元ポートは68です。IPパケットの要求と呼ばれるパケットを発見(UDP)
  3. DHCP応答
    1. 送信元IP 0.0.0.0を持つDHCPパケット、それは含めて、彼にIPを提供しますIPアドレス、サブネットマスク、ゲートウェイ、IPが有効で、クライアントはMACアドレスの最後で要求を開始し、DHCPサーバは、この情報が送信されます過去インチ また、送信元IPがDHCPサーバIPにパケットをブロードキャストした場合には、放送の形式、宛先IPアドレスは255.255.255.255です
    2. DHCPと呼ばれるIPパケットを提供オファーメッセージを
  4. クライアントのIPアドレスの選択
    1. 複数のDHCPサーバがクライアント用のIP要求を受信することができ、一般的に最初に受信提供パケットを選択し、対応するDHCPサーバにIPは、彼の申し出を受けたことを示す要求メッセージを送信します。
  5. DHCPサーバは、ローカルエリアネットワーク内に配置されていない場合は、配信のためのゲートウェイを必要とし、真ん中には、NATアドレス変換プロトコルを伴います

NATに関する3話

リファレンスソース

  1. NAT(ネットワークアドレス変換)
  2. IPアドレスの消費量を削減するために、同社は独自のネットワーク(LAN)のいずれかを持つことができ、LANは、IPアドレスが全体のローカルエリアネットワークのゲートウェイとして使用することができます割り当てられ、外の世界とのネットワーク通信;
  3. LANと外部ネットワーク内のホストが通信したい、あなたがゲートウェイを通過する必要があり、ホストが外の世界と通信したいです内部外部ローカルエリアを識別するために、ゲートウェイは、アドレス変換テーブルを内部IPホストに格納されて保持されます。ポート番号とIPマッピング後:ポート番号テーブルと、
  4. 、ホストNATプロトコルであり、このアドレス変換テーブルを通じて、社内LANと外の世界は、通信することができます
  5. IPと呼ばれるIP LANネットワーク
  6. ゲートウェイのIP、百度や他のいわゆるグローバルIP IP

4. 3ウェイハンドシェイク

リファレンスソース

  1. 役割:

    1. 両方の受信と送信性能の確認は正常です
    2. Open Serverの接続エラー許可するサーバーへの誤接続を防止するため、
    3. 信頼性の高い配信バックの準備のために、独自の初期化シーケンス番号を指定します。
    4. HTTPSプロトコルは、その後、3ウェイハンドシェイクプロセスは、デジタル証明書と暗号化キーの検証を行います場合に生成されます
  2. スリーウェイハンドシェイクプロセス

    最初に、クライアントは聞い状態では、サーバ、閉じた状態であります

    1. 最初のハンドシェイク:サーバーへのクライアントは、SYNパケット、クライアントを送信し、初期シーケンス番号ISN(c)を指定します。この段階では、クライアントはSYN_SENTです
    2. 第二のハンドシェイクは:サーバーが後でクライアントからのSYNパケットを受信し、応答にSYNパケットを所有し、また、独自の初期化シーケンス番号ISN(複数可)を指定します。彼らはクライアントSYNを受信したことを示すACKの値としてクライアント(C)+ 1、しばらくISN、サーバがSYN_REVD状態である間
    3. サードハンドシェイク:クライアントは、SYNパケットを受信するには、ACKパケットを送信し、もちろん、それはACKの値として、サーバのISN(S)+ 1である、彼はSYNサーバ、ケース内のクライアントを受けていますESTABLISHED状態にあります
    4. サーバーは、ACKパケットを受信した後、それがESTABLISHED状態になって、双方が接続を設定します。
  3. 模式図

TCP 3ウェイハンドシェイク

  1. よくある質問

    1. ISN(イニシャルシーケンス番号)は、それを固定されていますか?

    双方は、シリアル番号に従ってデータを再組み立てデータを受け入れる方法を互いに知って次回をできるようにISN通信を交換しました。それが固定されている場合、攻撃者は、その後の確認応答番号、従って、推測することは容易であるISNが動的に生成されます

    1. ハーフ接続キューとは何ですか?

    サーバは、最初のSYNを受信すると、SYN_RECDこの状態で、キュー内部の接続要求は、キューは、状態である半接続キュー3ウェイハンドシェイクを完了した後、接続が上で確立されます完全に接続されたキューに。キューがいっぱいの場合、パケット損失が発生することがあります。

    1. SYN-ACKの再送信メカニズム

    再送回数がシステム要件を超えた場合、最初の再送信のための確認メッセージクライアントサーバは、確認パケット、第二の再送信を受信するためにはまだいくつかの時間を待っていない場合は、ACKパケット - サーバーは、SYNを送信して終了しました再送信の最大数は、その後、接続情報は、半接続キューから削除されます。待ち時間指数関数的な成長:1248 ..

    1. スリーウェイハンドシェイクは、データを運ぶことができますか?

    最初の握手の二次、第三のハンドシェイクを運ぶことができないが、実際には、クライアントが接続を確立する状態に既にあるので、第三ハンドシェイクは、データを運ぶことができます。

    最初のハンドシェイクは、悪意のあるサーバはデータの最初のハンドシェイクキャリー大量にクライアント情報を受信避けるためにデータを運び、繰り返しサーバー時間と空間の無駄が生じ、SYNパケットを再送することはできません。

    1. なぜ二回握手をしませんか?

    要求は、ネットワーク内のクライアントステーによって送信された場合は、確認サーバが返信受け取るために長い時間の両端に接続されます。再送タイムアウトのためのクライアントの待機時間の後、要求が再接続されますが、接続要求が最終的にサーバーに到着します保持。あなたが三度目の握手をしていない場合は、サーバーは、2つの接続を開きます。3ウェイハンドシェイク場合、クライアントは接続確認を送ったサーバー鎖の要求を無視します。

手を振って5つ

クライアントが最初にシャットダウン要求を起動した場合は、最初に、双方は、ESTABLISHED状態にあります。

  1. 最初の波:クライアントは、FINパケットを送信するには、パケットは、シリアル番号が割り当てられます。この時点で、クライアントがあるFIN_WAIT1状態。
  2. 第二波:サーバーはFINパケットを受信し、ACKパケットが送信され、シーケンス番号のACKパケットとしてクライアントのシーケンス番号+ 1、クライアントは、FINメッセージを受信したことを示し、このサーバがあるときCLOSE_WAITの状態。
  3. 第三の波:サーバーも切断する場合は、クライアントにFINパケットを送信し、シリアル番号を指定することと同じ。このとき、サーバがあるLAST_ACK状態
  4. 第四の波:クライアントは、FINを受信し、ACKは、次にクライアントがあり、返信として送信TIME_WAITの状態。後は必要が彼らのサーバが入りACKパケットを受信していることを確認しながら、CLOSED状態に。
  5. サーバーは、ACKパケットを受信した後、それが閉じた状態です。
  6. 模式図

TCP 4波

1. ノートへのポイント:

  1. 每一次报文交换后,客户端与服务器端的状态是什么样的。
  2. Client 发送了 FIN 报文后,Server 一收到这个报文就进入 Close-Wait 状态,这个状态是为了让 Server 发送还未发送完成的数据,传送完后,Server 也发送 FIN 来结束连接。
  3. Client 接收到 Server 的 FIN 后,需要进入一个 Time-Wait 状态,时间为 2MSL(最大报文存活时间),再进入 Closed 状态,原因?
    1. 确保最后一个确认报文能够到达,若 Server 没有收到 Client 的 ACK,就会重新发送 FIN 报文,Client 等待一段时间就是为此;
    2. 等待一段时间是为了让本地连接持续时间内产生的所有报文从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。

6. TCP流量控制机制

参考来源

  1. 为什么要进行流量控制?

接收方缓存满后,再接受数据包会出现丢包的问题,为了避免丢包问题,控制发送方发送速率,让接收方、发送方处于动态平衡的策略叫做流量控制

  1. 如何控制

接收方每次接收到数据后,在发送确认报文的时候可以将自己**缓冲区还剩下多少空间(接收窗口 win)**告诉发送方。

发送方收到这个接收窗口的信息后,便调整自己的发送速率,即调整发送窗口的大小,当发送窗口变为0,则停止发送数据,避免出现丢包的情况。

  1. 发送方什么时候再继续发送数据?
    1. 当发送方收到 win = 0 的消息后,就停止发送报文,同时打开一个定时器,每隔一段时间就发送一个测试报文去询问接收方,“你准备好了吗?”,如果接收方回复可以继续发送,则继续发送;若 win 还是等于 0 ,则刷新启动定时器,准备下一次询问。

4.注意事项

  1. TCP/IP 全双工传输,因此通信双方都有两个滑动窗口,一个用于接受数据,接收窗口;一个用于发送数据,发送窗口(拥塞窗口)。指出窗口大小的通知称为 “窗口通告”。
  2. 接收窗口的大小固定吗?
    1. 现在的TCP协议中,大小是动态调整的
  3. 接收窗口越大越好吗?
    1. 太小,丢包率上升;太大,消耗内存。
    2. 根据网络环境以及发送方的拥塞窗口来进行动态调整。
  4. 一般情况下:接收窗口 >= 发送窗口

7. 拥塞控制机制

参考来源

1.为什么要进行拥塞控制?

​ 假设主机A和主机B通信

​ 当主机A给主机B发送报文后,由于某些原因,迟迟没有收到主机B的ACK确认报文,那么主机A会认为报文被丢失了,那么主机A将继续给主机B发送报文。但是现实情况可能是因为网络中有太多主机占用信道资源,导致网络拥塞,主机A第一次给主机B发送的报文还是可以到达主机B的,但是A再次给主机B发送了一个报文,不仅造成网络进一步拥塞,还浪费了信道资源。所以我们需要进行拥塞控制。

2.如何知道网络的拥塞情况?

​ 将A一次性连续发送的数据包个数称之为“拥塞窗口”,用N表示吧。那么A怎么知道网络的拥塞情况呢?

开始阶段,发送数据包试探,其中 N 指数增长,到达一个阈值 ssthresh 后,再线性增长。

3.到了瓶颈值后怎么办?

  1. 将达到瓶颈值的 N 称为 Max;
  2. 到达 Max 后,我们就回到最原始的状态,1 2 4 8 。。。这样开始,同时, 设置阈值 ssthresh​ = Max / 2

4.超时事件一定是网络拥塞吗?

​ 还有可能是某个数据包出现了丢失或者损害,导致这个数据包超时时间发生。

通过冗余 ACK 防止这种情况。当 A 连续收到三个确认 M2 的 ACK 且M3超时事件还没发生。A就知道 M3 可能丢失了,这个时候A就不必等待 M3 设置的计时器到期了,而是快速重传M3 。 并且把 ssthresh 设置为 Max 的一半,即 ssthresh = Max / 2 , 但是这个时候并非把控制窗口 N 设置为1,而是让N = ssthresh,N 在一个一个增长。 这种情况也叫做 快速恢复。

8.在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?

参考来源

1.格式验证与协议选择

  1. 浏览器对用户输入的网址做初步的格式化检查,只有通过格式化检查,才会进入下一步
  2. 浏览器使用 http 还是 https 访问服务器?
    1. 没有明确告知浏览器用哪个协议,浏览器采用默认的 http 协议

2.DNS 查询

  1. 拥有想要访问的网站的域名还是不够的,TCP/IP 协议传送消息需要知道对方的 IP 地址
  2. 于是,浏览器使用 DNS(域名系统)查询域名对应的 IP 地址
  3. DNS 先查询自己内存里面的 DNS Cache,没有 -》接着再看本地硬盘里面的 host 文件,还是没有
  4. 于是,DNS 请求 DNS 服务器,请求过程使用 UDP 协议,请求报文中还携带有网关的 MAC 地址,通过 ARP(地址解析协议)获取;
  5. 要求がDNSサーバに到着した後、それが返された場合、ドメイン名に対応する自分のIPアドレスを見て内部のDNSサーバのキャッシュは、要求されていないそうでない場合は、DNSルートサーバーを要求するDNSサーバーが走りました。「」。「」ルートサーバ、13ルートネームサーバのグローバル合計が、各DNSサーバは、13台のルートサーバのIPアドレスを知っています
  6. ルートサーバは、彼の孫サーバことを知って、(ドメイン名が要求された)「zhihu.com」を受け取るが、彼のIPを知らないが、「COM」IPアドレス、DNSサーバを知っているし、「COM」に行ってきました彼から得た「zhihu.com。」IPアドレス、IPアドレスはすぐにブラウザを待つように伝えます。

3. 3ウェイハンドシェイク

TCPプロトコルを使用します。

  1. 信頼性の高い仮想チャネルを確立するために、成功した3ウェイハンドシェイクの後。zhihu.comはとてもバック要求に、HTTPSプロトコルを使用するので、単にIPアドレス(zhihu.comドメイン名)を取得へのHTTPリクエストメッセージへの準備ができて、ブラウザは、この時間は、リダイレクトされたメッセージを取得します。
  2. HTTPは要求し、実質的に類似。しかし、違いがあるということ、HTTPSプロトコルは、証明書の検証ステップ、デフォルトのポート443を通過するために暗号化され、安全な、必要です
  3. 暗号化、復号化、証明書検証の一連の動作の後、ブラウザ開始された要求が最終的に応答を得た、HTTPS zhihu.comブラウザに最終的に家を返すとします。

質問があれば、私を修正してください!

公開された16元の記事 ウォンの賞賛2 ビュー1279

おすすめ

転載: blog.csdn.net/yx185/article/details/103281570