1. 程式人生 > >TCP協議學習筆記-半關閉連線

TCP協議學習筆記-半關閉連線

  1. tcp資料封裝格式
  • 整體資料格式
  • tcp首部封裝格式
  1. tcp首部標誌位的含義
  • tcp中6個標誌位元

    在服務端和客戶端之間管理資料,如PSH就是要求對端網絡卡在接收到位元組流以後儘快傳輸給應用層,儘量不要快取在網絡卡中
  • tcp的半關閉
    tcp提供在連線一端在結束它的傳送後還能接收來自另一端資料的能力,這就是半關閉

    讓左方的客戶端開始半關閉,開始的兩個報文段和正常的4次揮手是一致的,初始端發出的FIN,接著是另一端對這個FIN的ACK報文段。但是後面的就不同了,因為接收半關閉的一方仍能傳送資料。我們只顯示一個數據報文段和一個ACK報文段,但是可能傳送許多的報文段。當收到半關閉的一端在完成它的資料傳送後,將傳送一個FIN關閉這個方向的連線,這將傳送一個檔案結束符發起這個半關閉的應用程序。當對第二個FIN進行確認後,這個連線便徹底關閉。
    半關閉連線的使用
    如常用的遠端到另一臺伺服器執行一條命令並回顯到本機的終端

    這條命令將在bsd上執行sort排序命令,rsh命令的標準輸入來自datafile。rsh將它與在另外一主機上執行的程式間建立一個TCP連線。rsh的操作和簡單,它將標準輸入複製給tcp連線,並將結果從tcp連線中複製給標準輸出

    在遠端主機bsdi上,rshd伺服器將執行sort程式,它的標準輸入和標準輸出都是tcp連線。
    sort程式只有讀取到所有輸入資料後才能產生輸出。所有的原始資料通過tcp連線從rsh客戶端傳送給sort伺服器進行排序。當輸入到達檔案尾部時,rsh客戶端執行這個tcp連線的半關閉。接著sort伺服器在它的標準輸入上收到一個檔案結束符,並將排序的檔案複製到它的標準輸出上。

    如果這裡沒有半關閉,需要其他的一些技術讓客戶通知伺服器,客戶端已經完成了它的資料傳送,但仍要接收來自伺服器的資料。使用兩個tcp連線也可作為一個選擇,但使用半關閉的單