日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面试盲区TCP/SOCKET/三次握手 - 笔记

發布時間:2024/2/28 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试盲区TCP/SOCKET/三次握手 - 笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

七層協議

簡化為五層協議


Java NIO Channel:在Java中,輸入、輸出流被合并成為Channel(通道可以讀也可以寫,而一般來說是單向的,只能讀或者寫,所以之前我們用流進行IO操作的時候需要分別創建一個輸入流和一個輸出流)

下圖可以想象為8就是一個Channel,和百度了建立一個連接。
8指向一個開啟的socket,8就是文件描述符
<>表示輸入輸出(重定向)

fd類似于java當中的變量引用

exec命令解釋如下:
exec是一個shell builtin的指令,相當于shell的一個本地方法


例如,執行一個exec ls命令之后,ls命令會替換當前的shell外殼程序,直到ls退出,ls所在的線程就會消亡。

下圖可以看到,執行一個exec ls命令,當ls命令退出后,shell也退出了,連接斷開了

在Linux中,一切皆文件,可以看到,建立起的socket也是以一個文件的形式存在的。

請求百度主頁,用的是Http協議。
(下圖第一行)首先,人工拼接一個字符串,發給百度(-e用來識別轉義字符換行符\n),整句含義為:讓8指向一個輸入輸出(雙向流),指向一個socket,綁定到一個百度的連接
(如果建立連接太長時間,不做任何操作的話,百度服務器會自動把連接關掉。除非做心跳去保持連接)

(上圖倒數第二行)然后,如下圖所示命令,將echo的標準輸出重定向到8,仍然用8接收返回的輸入流

返回內容

ls 也有標準輸出 0,1,2,可以被重定向
>是重定向符號,使用方式如下所示

以上是用戶層(應用層)做的。用戶層給出命令之后,剩下的交由內核層(傳輸控制層,網絡層,鏈路層,物理層)來做。

傳輸層協議:TCP,UDP

TCP協議:面向連接的,可靠的傳輸協議
TCP的三次握手:客戶端要和服務端建立連接的過程,如下

三次握手之后,雙方才會有服務資源(C結構體、緩沖區)的開辟,才會產生連接,即“面向連接”。

Socket:套接字,是成對出現的(分別是連接一端的IP:port和另一端的IP:port)
ip定位到主機,端口號定位到應用程序

服務端是明確要占用的,只需要開啟一個度固定的端口號
客戶端的端口號是隨機的

同一個端口號,可以連接很多個不同的目標端口(不存在端口被占用沖突的問題,因為可以這樣想,一個80端口可以建立好多個連接,是吧)

也就是說,即使65535個端口都用來和www.baidu.com建立連接了,此時這65535個端口仍然可以和www.qq.com建立連接,不會沖突。

四次分手:雙方都要確認斷開連接

使用tcpdump監聽(抓包),可以看到三次握手、四次揮手的過程

三次握手到四次分手不可被分割!-> 高并發負載均衡LVS 4 負載均衡服務器
DDos攻擊:用一堆肉雞,發一堆握手請求,不給回復確認,讓服務器等待(一段時間才會斷開),導致真正的請求無法進入

網絡層

鏈路層

MAC地址在每一跳都是不斷被重新封裝,變化的。

總結

以上是生活随笔為你收集整理的面试盲区TCP/SOCKET/三次握手 - 笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。