網(wǎng)絡(luò)原理與網(wǎng)絡(luò)編程

io模型

有哪些網(wǎng)絡(luò)io模型鸥昏?哪些網(wǎng)絡(luò)操作可以是異步的存和?

常見(jiàn)的網(wǎng)絡(luò) IO 模型有:同步阻塞 IO,同步非阻塞 IO蜓席,多路復(fù)用 IO 和異步 IO器一。

異步網(wǎng)絡(luò)操作包括:連接請(qǐng)求,數(shù)據(jù)發(fā)送和數(shù)據(jù)接收厨内。(不確定)

select/poll/epoll

select/poll與epoll區(qū)別

  • select 和 poll 是兩個(gè)系統(tǒng)調(diào)用祈秕,用于監(jiān)視多個(gè)文件描述符,以檢查它們是否準(zhǔn)備好 I/O雏胃。
    epoll 是 select 和 poll 的更高效替代方案请毛,在 Linux 內(nèi)核 2.6 中引入。它使用事件驅(qū)動(dòng)方法監(jiān)視文件描述符瞭亮,提供更好的可擴(kuò)展性和性能方仿。

  • select、poll 和 epoll 主要的區(qū)別如下:
    可擴(kuò)展性:select 和 poll 對(duì)監(jiān)視的文件描述符數(shù)量有限制统翩,而 epoll 可以監(jiān)視數(shù)以千計(jì)的文件描述符仙蚜。
    性能:epoll 比 select 和 poll 更快,特別是在監(jiān)視大量文件描述符時(shí)唆缴。
    監(jiān)視模式:select 和 poll 的監(jiān)視模式有限,而 epoll 提供多種監(jiān)視模式黍翎,包括邊緣觸發(fā)和級(jí)別觸發(fā)面徽。

總體來(lái)說(shuō),epoll比select和poll更高效,更靈活趟紊,資源消耗更小氮双,是一種更優(yōu)秀的I/O多路復(fù)用機(jī)制。

  • 其他補(bǔ)充(select和epoll對(duì)比):
    原理不同:select是阻塞式的霎匈,每次調(diào)用都會(huì)重新遍歷所有文件描述符戴差;而epoll是非阻塞式的,它內(nèi)部使用紅黑樹(shù)維護(hù)所有的文件描述符铛嘱,每次調(diào)用只需要遍歷發(fā)生變化的文件描述符暖释。

    效率不同:select的效率較低,因?yàn)樗看握{(diào)用都需要重新遍歷所有文件描述符墨吓;而epoll的效率較高球匕,因?yàn)樗鼉?nèi)部使用紅黑樹(shù)維護(hù)所有的文件描述符,每次調(diào)用只需要遍歷發(fā)生變化的文件描述符帖烘。

    支持的文件描述符數(shù)量不同:select支持的文件描述符數(shù)量有限制亮曹,在不同的操作系統(tǒng)中限制不同;而epoll支持的文件描述符數(shù)量沒(méi)有限制秘症。

    支持的事件類型不同:select支持讀照卦、寫(xiě)、異常事件乡摹;而epoll支持讀役耕、寫(xiě)、異常趟卸、邊沿觸發(fā)蹄葱、水平觸發(fā)等多種事件。

TUP/UDP

TCP三次握手锄列,四次揮手图云,發(fā)送的包名,狀態(tài)圖邻邮,對(duì)應(yīng)的POSIX API

  • TCP三次握手:
    第一次握手:客戶端發(fā)送SYN(Synchronize)請(qǐng)求竣况,表示請(qǐng)求建立連接。
    第二次握手:服務(wù)器收到請(qǐng)求后筒严,發(fā)送SYN+ACK(Synchronize+Acknowledgment)應(yīng)答丹泉,表示同意建立連接。
    第三次握手:客戶端收到應(yīng)答后鸭蛙,發(fā)送ACK(Acknowledgment)確認(rèn)摹恨,表示建立連接完成。

  • TCP四次揮手:
    第一次揮手:客戶端發(fā)送FIN(Finish)請(qǐng)求娶视,表示請(qǐng)求結(jié)束連接晒哄。
    第二次揮手:服務(wù)器收到請(qǐng)求后睁宰,發(fā)送ACK(Acknowledgment)應(yīng)答,表示收到請(qǐng)求寝凌。
    第三次揮手:服務(wù)器發(fā)送FIN(Finish)請(qǐng)求柒傻,表示請(qǐng)求結(jié)束連接。
    第四次揮手:客戶端收到請(qǐng)求后较木,發(fā)送ACK(Acknowledgment)確認(rèn)红符,表示結(jié)束連接完成。

  • 發(fā)送的包名:
    SYN(Synchronize)請(qǐng)求
    SYN+ACK(Synchronize+Acknowledgment)應(yīng)答
    ACK(Acknowledgment)確認(rèn)
    FIN(Finish)請(qǐng)求

  • 狀態(tài)圖:
    1.三次握手過(guò)程中伐债,客戶端和服務(wù)端的狀態(tài)變化如下:
    客戶端:CLOSED -> SYN_SENT -> ESTABLISHED
    服務(wù)端:CLOSED -> LISTEN -> SYN_RCVD -> ESTABLISHED
    2.四次揮手過(guò)程中预侯,客戶端和服務(wù)端的狀態(tài)變化如下:
    客戶端:ESTABLISHED -> FIN_WAIT_1 -> FIN_WAIT_2 -> TIME_WAIT -> CLOSED
    服務(wù)端:ESTABLISHED -> CLOSE_WAIT -> LAST_ACK -> CLOSED

  • 對(duì)應(yīng)的POSIX API:
    socket():創(chuàng)建套接字。(創(chuàng)建一個(gè)通信端點(diǎn)泳赋,為連接做準(zhǔn)備)
    bind():綁定套接字
    listen():監(jiān)聽(tīng)套接字雌桑。(服務(wù)器監(jiān)聽(tīng)連接請(qǐng)求)
    accept():接收連接請(qǐng)求。(服務(wù)器接受連接請(qǐng)求)
    connect():發(fā)起連接請(qǐng)求祖今。(客戶端發(fā)起連接請(qǐng)求)
    send()/recv():發(fā)送/接收數(shù)據(jù)
    close():關(guān)閉套接字校坑。(關(guān)閉連接)

TCP鏈接建立和斷開(kāi)的過(guò)程,狀態(tài)轉(zhuǎn)移

  • TCP 鏈接建立和斷開(kāi)的過(guò)程如下:
    1.建立連接:
    客戶端發(fā)送 SYN 報(bào)文千诬,表示請(qǐng)求建立連接耍目。
    服務(wù)端收到 SYN 報(bào)文,回復(fù) ACK 和 SYN 報(bào)文徐绑,表示同意建立連接邪驮。
    客戶端收到 ACK 和 SYN 報(bào)文,回復(fù) ACK 報(bào)文傲茄,表示確認(rèn)連接建立毅访。
    2.斷開(kāi)連接:
    一方發(fā)送 FIN 報(bào)文,表示請(qǐng)求斷開(kāi)連接盘榨。
    另一方收到 FIN 報(bào)文喻粹,回復(fù) ACK 報(bào)文,表示同意斷開(kāi)連接草巡。
    發(fā)送 FIN 報(bào)文的一方再次回復(fù) ACK 報(bào)文守呜,表示確認(rèn)連接斷開(kāi)。

  • TCP 連接狀態(tài)轉(zhuǎn)移如下:
    CLOSED:未建立連接狀態(tài)山憨。
    SYN_SENT:客戶端已發(fā)送 SYN 報(bào)文查乒,等待服務(wù)端回復(fù)。
    SYN_RCVD:服務(wù)端已收到 SYN 報(bào)文郁竟,等待客戶端回復(fù) ACK玛迄。
    ESTABLISHED:連接建立成功,可以進(jìn)行數(shù)據(jù)傳輸棚亩。
    FIN_WAIT_1:客戶端已發(fā)送 FIN 報(bào)文蓖议,等待服務(wù)端回復(fù) ACK藻肄。
    FIN_WAIT_2:服務(wù)端已回復(fù) ACK,等待服務(wù)端發(fā)送 FIN拒担。
    TIME_WAIT:等待足夠時(shí)間以確保所有數(shù)據(jù)已傳達(dá),然后進(jìn)入 CLOSED 狀態(tài)攻询。
    CLOSE_WAIT:服務(wù)端已發(fā)

SYN Flood攻擊从撼,防御措施

  • SYN Flood 攻擊(SYN洪水攻擊、半開(kāi)連接攻擊):這是一種 DDoS 攻擊钧栖,利用 TCP 連接序列(“三次握手”)的弱點(diǎn)低零,向目標(biāo)系統(tǒng)發(fā)送大量 SYN 請(qǐng)求,使其無(wú)法處理合法請(qǐng)求拯杠。(攻擊者將可擊垮目標(biāo)服務(wù)器計(jì)算機(jī)上的所有可用端口掏婶,導(dǎo)致目標(biāo)設(shè)備在響應(yīng)合法流量時(shí)表現(xiàn)遲鈍乃至全無(wú)響應(yīng)。)

  • 首包丟棄源認(rèn)證兩種手段結(jié)合潭陪,對(duì)于防御SYN Flood(特別是不斷變換源IP和源端口的虛假源攻擊)非常有效雄妥。
    通常情況下客戶端發(fā)送SYN報(bào)文后如果在一定時(shí)間沒(méi)有收到服務(wù)器的SYN-ACK應(yīng)答,客戶端會(huì)重新發(fā)送SYN報(bào)文依溯。Anti-DDoS系統(tǒng)會(huì)丟棄掉收到的第一個(gè)SYN報(bào)文老厌。SYN Flood攻擊時(shí),黑客發(fā)送的絕大多數(shù)是變?cè)吹腟YN報(bào)文黎炉,所有的SYN報(bào)文對(duì)于Anti-DDoS系統(tǒng)來(lái)說(shuō)都是首包枝秤,都將被直接丟棄。如果客戶端重傳了SYN報(bào)文慷嗜,Anti-DDoS系統(tǒng)再對(duì)該報(bào)文進(jìn)行源認(rèn)證淀弹。如此一來(lái),大大減少了Anti-DDoS系統(tǒng)代答的壓力庆械。

  • 補(bǔ)充:源認(rèn)證和首包丟棄
    源認(rèn)證
    Anti-DDoS系統(tǒng)攔截客戶端發(fā)送的SYN報(bào)文薇溃,代替服務(wù)器向客戶端發(fā)送SYN-ACK報(bào)文,如果客戶端不應(yīng)答干奢,則認(rèn)為該客戶端為虛假源痊焊;如果客戶端應(yīng)答,則Anti-DDoS系統(tǒng)認(rèn)為該客戶端為真實(shí)源忿峻,并將其IP地址加入白名單薄啥,在一段時(shí)間允許該源發(fā)送的所有SYN報(bào)文通過(guò),也不做代答逛尚。
    首包丟棄
    如果Anti-DDoS系統(tǒng)代替服務(wù)器應(yīng)答了所有的SYN Flood攻擊報(bào)文垄惧,那么性能瓶頸僅僅是從服務(wù)器轉(zhuǎn)移到了Anti-DDoS系統(tǒng)而已。一旦Anti-DDoS系統(tǒng)的系統(tǒng)資源耗盡绰寞,攻擊依舊會(huì)透?jìng)鞯椒?wù)器到逊,而且大量反彈的SYN-ACK報(bào)文也會(huì)對(duì)網(wǎng)絡(luò)造成一定的壓力铣口。Anti-DDoS系統(tǒng)利用首包丟棄來(lái)解決這個(gè)問(wèn)題

TCP和UDP區(qū)別?TCP如何保證可靠性觉壶?對(duì)方是否存活(心跳檢測(cè))脑题?

  • TCP和UDP區(qū)別:
    TCP(Transmission Control Protocol)是一種面向連接的、可靠的铜靶、基于字節(jié)流的傳輸層協(xié)議叔遂。它保證數(shù)據(jù)的可靠傳輸,并且提供流量控制和擁塞控制争剿。
    UDP(User Datagram Protocol)是一種無(wú)連接的已艰、不可靠的、基于數(shù)據(jù)報(bào)的傳輸層協(xié)議蚕苇。它不保證數(shù)據(jù)的可靠傳輸哩掺,沒(méi)有流量控制和擁塞控制。
    其他補(bǔ)充:
    TCP是面向連接的協(xié)議涩笤,保證數(shù)據(jù)的可靠傳輸嚼吞。UDP是面向無(wú)連接的協(xié)議,不保證數(shù)據(jù)的可靠性蹬碧。
    TCP是流式協(xié)議誊薄,把數(shù)據(jù)分成多個(gè)數(shù)據(jù)報(bào),并且保證每個(gè)數(shù)據(jù)報(bào)都能到達(dá)對(duì)方锰茉。UDP是數(shù)據(jù)報(bào)協(xié)議呢蔫,不保證數(shù)據(jù)的順序。
    TCP的傳輸速度比UDP慢飒筑,因?yàn)門CP需要處理更多的握手和確認(rèn)信息片吊。
    TCP是適用于需要長(zhǎng)連接的應(yīng)用,如文件傳輸协屡、電子郵件等俏脊。UDP是適用于需要快速傳輸?shù)膽?yīng)用柒昏,如語(yǔ)音笙什、視頻等诸蚕。

  • TCP如何保證可靠性:
    除了三次握手保證可靠性外工坊;
    通過(guò)確認(rèn)機(jī)制,確保數(shù)據(jù)能夠到達(dá)對(duì)方姻蚓。
    通過(guò)重傳機(jī)制舌厨,確保數(shù)據(jù)能夠準(zhǔn)確傳輸缀踪。
    通過(guò)滑動(dòng)窗口機(jī)制盈匾,確保數(shù)據(jù)能夠快速傳輸腾务。

    或者回答(推薦):
    數(shù)據(jù)校驗(yàn):通過(guò)數(shù)據(jù)校驗(yàn)確保數(shù)據(jù)的完整性。
    流量控制:通過(guò)滑動(dòng)窗口機(jī)制避免接收方緩存溢出削饵。
    重傳機(jī)制:如果發(fā)送方發(fā)現(xiàn)數(shù)據(jù)丟失岩瘦,會(huì)重傳丟失的數(shù)據(jù)未巫。
    擁塞控制:通過(guò)慢啟動(dòng)、擁塞避免等算法避免網(wǎng)絡(luò)擁塞启昧。

  • 對(duì)方是否存活(心跳檢測(cè)):
    可以通過(guò)發(fā)送心跳消息來(lái)檢測(cè)對(duì)方是否存活叙凡。如果一段時(shí)間內(nèi)沒(méi)有收到心跳消息,則判斷對(duì)方不存在密末。這樣可以確保連接的實(shí)時(shí)性狭姨。(心跳檢測(cè)通常由應(yīng)用層實(shí)現(xiàn),不是TCP協(xié)議的一部分苏遥。)

TCP中的流量控制原理

TCP 中的流量控制是通過(guò)維護(hù)發(fā)送窗口來(lái)實(shí)現(xiàn)的。發(fā)送窗口是一個(gè)數(shù)字赡模,表示發(fā)送方可以發(fā)送的最大字節(jié)數(shù)田炭。接收方根據(jù)自己的緩存情況通過(guò) ACK 報(bào)文告訴發(fā)送方可以接收的數(shù)據(jù)量。發(fā)送方根據(jù)接收到的 ACK 報(bào)文動(dòng)態(tài)調(diào)整發(fā)送窗口漓柑,以保證數(shù)據(jù)不會(huì)被緩存過(guò)多教硫。

TCP的擁塞控制原理?實(shí)現(xiàn)擁塞控制的主要算法有哪些辆布?

  • TCP 的擁塞控制原理是通過(guò)監(jiān)測(cè)網(wǎng)絡(luò)中數(shù)據(jù)包丟失和延遲情況來(lái)評(píng)估網(wǎng)絡(luò)擁塞程度瞬矩,并調(diào)整發(fā)送窗口大小來(lái)降低網(wǎng)絡(luò)擁塞。
    (或者:通過(guò)監(jiān)測(cè)網(wǎng)絡(luò)狀況锋玲,動(dòng)態(tài)調(diào)整發(fā)送窗口景用,以保證網(wǎng)絡(luò)的有效利用,避免網(wǎng)絡(luò)擁塞惭蹂。)

  • 常見(jiàn)的 TCP 擁塞控制算法有(4種):
    快速重傳:當(dāng)發(fā)現(xiàn)數(shù)據(jù)包丟失時(shí)伞插,快速重傳算法立即重新發(fā)送丟失的數(shù)據(jù)包。
    快速恢復(fù):當(dāng)發(fā)現(xiàn)數(shù)據(jù)包丟失時(shí)盾碗,快速恢復(fù)算法通過(guò)減小發(fā)送窗口大小來(lái)降低網(wǎng)絡(luò)擁塞媚污。
    慢啟動(dòng):慢啟動(dòng)算法通過(guò)慢慢增加發(fā)送窗口大小來(lái)確保網(wǎng)絡(luò)穩(wěn)定。
    擁塞避免:擁塞避免算法通過(guò)監(jiān)測(cè)網(wǎng)絡(luò)狀況廷雅,并在發(fā)現(xiàn)擁塞時(shí)減小發(fā)送窗口大小耗美,以降低網(wǎng)絡(luò)擁塞。

UDP能保證數(shù)據(jù)包順序嗎?
UDP怎么實(shí)現(xiàn)TCP的擁塞控制航缀?

  • 不能商架。UDP是面向無(wú)連接的協(xié)議,不像TCP那樣有確認(rèn)機(jī)制和重傳機(jī)制芥玉,所以不保證數(shù)據(jù)的順序甸私。UDP數(shù)據(jù)報(bào)的接收順序可能與發(fā)送順序不同,因?yàn)閁DP不保證數(shù)據(jù)的可靠性飞傀。
    如果需要保證數(shù)據(jù)包的順序皇型,可以使用TCP協(xié)議诬烹。或者如果需要保證數(shù)據(jù)包的順序弃鸦,需要在應(yīng)用層自己處理绞吁。

  • UDP不支持擁塞控制,因?yàn)樗且环N無(wú)連接的協(xié)議唬格。如果需要擁塞控制家破,可以使用TCP或者在應(yīng)用層上實(shí)現(xiàn)自己的擁塞控制算法。

TCP的timeout狀態(tài)含義购岗,怎么避免timeout汰聋?TIME-WAIT()狀態(tài)下的等待時(shí)間是多少?為什么(即TIME_WAIT的作用)喊积?
四次揮手中烹困,TIME-WAIT狀態(tài)是在哪一步?

  • TCP timeout 狀態(tài):在傳輸數(shù)據(jù)時(shí)乾吻,如果一段時(shí)間內(nèi)未收到對(duì)方的 ACK 確認(rèn)髓梅,則認(rèn)為該數(shù)據(jù)已經(jīng)丟失,將重新發(fā)送該數(shù)據(jù)绎签。(指在數(shù)據(jù)傳輸過(guò)程中枯饿,由于網(wǎng)絡(luò)故障或其他原因,導(dǎo)致TCP連接失效诡必,而進(jìn)入超時(shí)狀態(tài)奢方。)

  • 避免 timeout:
    增加 timeout 時(shí)間,但這會(huì)增加網(wǎng)絡(luò)的延遲爸舒。
    增加數(shù)據(jù)的重發(fā)次數(shù)袱巨,但這會(huì)增加網(wǎng)絡(luò)的流量。
    使用更高效的網(wǎng)絡(luò)協(xié)議碳抄,如 TCP-SACK愉老、TCP-FACK 等。

  • TIME-WAIT 狀態(tài)下的等待時(shí)間是 2 MSL(Maximum Segment Lifetime)剖效,通常為 2 分鐘(TCP協(xié)議規(guī)定嫉入,在TIME-WAIT狀態(tài)下,系統(tǒng)需要等待2倍的最大報(bào)文生存時(shí)間)璧尸。該狀態(tài)等待時(shí)間是為了確保發(fā)送方的最后一個(gè)數(shù)據(jù)包已經(jīng)被對(duì)方接收咒林,避免未接收的數(shù)據(jù)包被誤判為新的數(shù)據(jù)包。

  • TIME-WAIT狀態(tài)是在四次握手的第四步爷光。

計(jì)算機(jī)網(wǎng)絡(luò)結(jié)構(gòu)

OSI七層垫竞?TCP/IP五層?

  • OSI 七層模型:
    物理層:描述網(wǎng)絡(luò)的物理設(shè)備,如網(wǎng)絡(luò)接口卡欢瞪、電纜等活烙。
    數(shù)據(jù)鏈路層:負(fù)責(zé)數(shù)據(jù)的傳輸和錯(cuò)誤檢測(cè)。
    網(wǎng)絡(luò)層:負(fù)責(zé)數(shù)據(jù)的路由和網(wǎng)絡(luò)地址分配遣鼓。
    傳輸層:負(fù)責(zé)數(shù)據(jù)的傳輸啸盏,并且提供可靠的數(shù)據(jù)傳輸服務(wù)。
    會(huì)話層:負(fù)責(zé)數(shù)據(jù)傳輸?shù)耐胶凸芾怼?br> 表示層:負(fù)責(zé)數(shù)據(jù)的編碼和解碼骑祟。
    應(yīng)用層:負(fù)責(zé)應(yīng)用程序與網(wǎng)絡(luò)間的通信回懦。

  • TCP/IP 五層模型:
    物理層:與 OSI 模型的物理層相同。
    數(shù)據(jù)鏈路層:與 OSI 模型的數(shù)據(jù)鏈路層相同次企。
    網(wǎng)絡(luò)層:與 OSI 模型的網(wǎng)絡(luò)層相同怯晕。
    傳輸層:與 OSI 模型的傳輸層相同。
    應(yīng)用層:合并了 OSI 模型的會(huì)話層缸棵、表示層和應(yīng)用層舟茶。

計(jì)算機(jī)網(wǎng)絡(luò)的七層結(jié)構(gòu)、五層結(jié)構(gòu)蛉谜、四層結(jié)構(gòu)?
http崇堵、tcp分別屬于哪一層型诚?

計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分為3種:OSI體系結(jié)構(gòu)(七層),TCP/IP體系結(jié)構(gòu)(四層)鸳劳,五層體系結(jié)構(gòu)狰贯。

  • OSI體系結(jié)構(gòu)(七層): 概念清楚,理論也比較完整赏廓,但是它既復(fù)雜又不實(shí)用涵紊。
  • TCP/IP體系結(jié)構(gòu)(四層):TCP/IP是一個(gè)四層體系結(jié)構(gòu),得到了廣泛的運(yùn)用幔摸。
  • 五層體系結(jié)構(gòu):為了方便學(xué)習(xí)摸柄,折中OSI體系結(jié)構(gòu)TCP/IP體系結(jié)構(gòu),綜合二者的優(yōu)點(diǎn)既忆,這樣既簡(jiǎn)潔驱负,又能將概念講清楚。
image.png

HTTP 屬于應(yīng)用層患雇,是一種應(yīng)用層協(xié)議跃脊,負(fù)責(zé)在 Web 上進(jìn)行數(shù)據(jù)傳輸。
TCP 屬于傳輸層苛吱,是一種傳輸層協(xié)議酪术,負(fù)責(zé)提供可靠的數(shù)據(jù)傳輸服務(wù)。

http與https的區(qū)別翠储?https的加密方式绘雁?

  • HTTP 和 HTTPS 的區(qū)別:
    1.安全性:HTTP 是明文傳輸橡疼,不安全;HTTPS 則使用 SSL/TLS 加密咧七,提供安全性衰齐。
    2.端口號(hào):HTTP 的默認(rèn)端口號(hào)是 80;HTTPS 的默認(rèn)端口號(hào)是 443继阻。
    3.證書(shū):HTTPS 需要使用數(shù)字證書(shū)耻涛,證明網(wǎng)站的合法性。
  • HTTPS 加密方式:
    HTTPS 使用 SSL/TLS 協(xié)議進(jìn)行加密瘟檩,其中 SSL(Secure Sockets Layer)是一種網(wǎng)絡(luò)安全協(xié)議抹缕,TLS(Transport Layer Security)是 SSL 的繼任者。
    它們使用對(duì)稱加密墨辛、非對(duì)稱加密和散列算法等技術(shù)卓研,保證數(shù)據(jù)在傳輸過(guò)程中不被竊取和篡改。

HTTP狀態(tài)碼有哪些

  • HTTP 狀態(tài)碼分為 5 個(gè)類別:
    1xx:信息性狀態(tài)碼睹簇,表示接收到請(qǐng)求并繼續(xù)處理奏赘。
    2xx:成功狀態(tài)碼,表示請(qǐng)求已成功處理太惠。常見(jiàn)的有 200 OK磨淌、201 Created 等。
    3xx:重定向狀態(tài)碼凿渊,表示需要進(jìn)一步操作以完成請(qǐng)求梁只。常見(jiàn)的有 301 Moved Permanently、302 Found 等埃脏。
    4xx:客戶端錯(cuò)誤狀態(tài)碼搪锣,表示客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無(wú)法實(shí)現(xiàn)。常見(jiàn)的有 400 Bad Request彩掐、401 Unauthorized 等构舟。
    5xx:服務(wù)器錯(cuò)誤狀態(tài)碼,表示服務(wù)器無(wú)法完成對(duì)請(qǐng)求的處理堵幽。常見(jiàn)的有 500 Internal Server Error旁壮、503 Service Unavailable 等。
  • 常見(jiàn)的 HTTP 狀態(tài)碼:
    200 OK:請(qǐng)求成功谐檀。
    201 Created:請(qǐng)求成功抡谐,并創(chuàng)建了新的資源。
    204 No Content:請(qǐng)求成功桐猬,但沒(méi)有返回任何內(nèi)容麦撵。
    301 Moved Permanently:請(qǐng)求的資源已永久移動(dòng)到新位置。
    302 Found:請(qǐng)求的資源臨時(shí)移動(dòng)到新位置。
    304 Not Modified:請(qǐng)求的資源未改變免胃,可以使用緩存音五。
    400 Bad Request:請(qǐng)求錯(cuò)誤,請(qǐng)求包含語(yǔ)法錯(cuò)誤羔沙。
    401 Unauthorized:請(qǐng)求未授權(quán)躺涝,需要用戶驗(yàn)證。
    403 Forbidden:請(qǐng)求被禁止扼雏,禁止訪問(wèn)坚嗜。
    404 Not Found:請(qǐng)求的資源不存在。
    500 Internal Server Error:服務(wù)器內(nèi)部錯(cuò)誤诗充。

GET 和 POST的區(qū)別苍蔬?本質(zhì)區(qū)別?

  • 本質(zhì)區(qū)別
    GET 和 POST是HTTP協(xié)議中的兩種請(qǐng)求方法蝴蜓,GET 和POST 方法沒(méi)有本質(zhì)區(qū)別碟绑,僅報(bào)文格式不同。GET請(qǐng)求用于獲取資源茎匠,而POST請(qǐng)求用于向服務(wù)器發(fā)送數(shù)據(jù)格仲,如用戶輸入。
    GET:GET 是一種用于從服務(wù)器檢索數(shù)據(jù)的 HTTP 方法诵冒。當(dāng)您在網(wǎng)頁(yè)瀏覽器中輸入 URL 時(shí)凯肋,瀏覽器會(huì)向服務(wù)器發(fā)送一個(gè) GET 請(qǐng)求,請(qǐng)求指定的資源造烁。
    POST:POST 是另一種用于向服務(wù)器發(fā)送數(shù)據(jù)以進(jìn)行處理的 HTTP 方法否过。與 GET 不同午笛,POST 請(qǐng)求可以在請(qǐng)求體中包含數(shù)據(jù)惭蟋,這允許進(jìn)行更復(fù)雜的操作,例如提交表單药磺。

  • 區(qū)別:
    get比post更快(原因見(jiàn)下)
    post發(fā)送的數(shù)據(jù)更大(get有url長(zhǎng)度限制)
    post能發(fā)送更多的數(shù)據(jù)類型(get只能發(fā)送ASCII字符)
    post更安全(不會(huì)作為url的一部分告组,不會(huì)被緩存、保存在服務(wù)器日志癌佩、以及瀏覽器瀏覽記錄中)

  • 為什么get比post更快木缝?
    1.post請(qǐng)求包含更多的請(qǐng)求頭
    2.最重要的一條,post在真正接收數(shù)據(jù)之前會(huì)先將請(qǐng)求頭發(fā)送給服務(wù)器進(jìn)行確認(rèn)围辙,然后才真正發(fā)送數(shù)據(jù)
    3.get會(huì)將數(shù)據(jù)緩存起來(lái)

子網(wǎng)掩碼的作用我碟?

子網(wǎng)掩碼是一個(gè)32位地址,是與IP地址結(jié)合使用的一種技術(shù)姚建。 它的主要作用有兩個(gè)矫俺,一是用于屏蔽IP地址的一部分以區(qū)別網(wǎng)絡(luò)標(biāo)識(shí)和主機(jī)標(biāo)識(shí),并說(shuō)明該IP地址是在局域網(wǎng)上,還是在遠(yuǎn)程網(wǎng)上厘托。 二是用于將一個(gè)大的IP網(wǎng)絡(luò)劃分為若干小的子網(wǎng)絡(luò)友雳。 使用子網(wǎng)是為了減少IP的浪費(fèi)。

常見(jiàn)的網(wǎng)絡(luò)協(xié)議有哪些铅匹?
說(shuō)一下DNS協(xié)議常見(jiàn)網(wǎng)絡(luò)協(xié)議

  • 常見(jiàn)的網(wǎng)絡(luò)協(xié)議
    TCP/IP
    HTTP
    FTP
    SMTP
    DNS
    DHCP
    IPsec
    SSL/TLS

  • DNS是一種可以將域名和IP地址相互映射的以層次結(jié)構(gòu)分布的數(shù)據(jù)庫(kù)系統(tǒng)押赊。DNS系統(tǒng)采用遞歸查詢請(qǐng)求的方式來(lái)響應(yīng)用戶的查詢,為互聯(lián)網(wǎng)的運(yùn)行提供關(guān)鍵性的基礎(chǔ)服務(wù)

網(wǎng)絡(luò)編程

socket函數(shù)介紹? socket編程介紹包斑? socket 基礎(chǔ) API 的使用流礁?

  • socket 函數(shù)是用于創(chuàng)建網(wǎng)絡(luò)套接字的函數(shù),套接字是網(wǎng)絡(luò)編程的基礎(chǔ)舰始。

  • socket 編程是一種網(wǎng)絡(luò)編程方式崇棠,用于在兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信。它通過(guò)使用套接字實(shí)現(xiàn)丸卷,以通過(guò)網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù)枕稀。

  • 基礎(chǔ) socket API 包括:
    socket():創(chuàng)建套接字
    bind():將套接字與特定的 IP 地址和端口號(hào)綁定
    listen():監(jiān)聽(tīng)套接字,等待連接請(qǐng)求
    accept():接受客戶端連接請(qǐng)求
    connect():連接到服務(wù)器套接字
    send():向連接的客戶端發(fā)送數(shù)據(jù)
    recv():從連接的客戶端接收數(shù)據(jù)
    close():關(guān)閉套接字
    這些 API 函數(shù)通常用于創(chuàng)建網(wǎng)絡(luò)客戶端和服務(wù)器程序谜嫉。

reactor模式和preactor模式區(qū)別

  • (答案一)Reactor模式是基于同步I/O的萎坷,而Proactor模式基于異步I/O相關(guān)的。

    在Reactor模式中沐兰,事件分離者等待某個(gè)事件或者可應(yīng)用或個(gè)操作的狀態(tài)發(fā)生(比如文件描述符可讀寫(xiě)哆档,或者是socket可讀寫(xiě)),等待后住闯,分離者就把這個(gè)事件傳給事先注冊(cè)的事件處理函數(shù)或者回調(diào)函數(shù)瓜浸,由后者來(lái)做實(shí)際的讀寫(xiě)操作。

    而在Proactor模式中比原,事件處理者(或者代由事件分離者發(fā)起)直接發(fā)起一個(gè)異步讀寫(xiě)操作(相當(dāng)于請(qǐng)求)插佛,而實(shí)際的工作是由操作系統(tǒng)來(lái)完成的。發(fā)起時(shí)量窘,需要提供的參數(shù)包括用于存放讀到數(shù)據(jù)的緩存區(qū)雇寇,讀的數(shù)據(jù)大小,或者用于存放外發(fā)數(shù)據(jù)的緩存區(qū)蚌铜,以及這個(gè)請(qǐng)求完后的回調(diào)函數(shù)等信息锨侯。事件分離者得知了這個(gè)請(qǐng)求,它默默等待這個(gè)請(qǐng)求的完成冬殃,然后轉(zhuǎn)發(fā)完成事件給相應(yīng)的事件處理者或者回調(diào)囚痴。
    這種異步模式的典型實(shí)現(xiàn)是基于操作系統(tǒng)底層異步API的,所以我們可稱之為“系統(tǒng)級(jí)別”的或者“真正意義上”的異步审葬,因?yàn)榫唧w的讀寫(xiě)是由操作系統(tǒng)代勞的深滚。

  • (答案二)Reactor 模式和 Proactor 模式是兩種不同的 I/O 多路復(fù)用技術(shù)骂束。

    Reactor 模式:在 Reactor 模式中,程序等待事件的到來(lái)成箫,并在事件到達(dá)時(shí)執(zhí)行相應(yīng)的處理展箱。它是一種同步 I/O 模型,因?yàn)樗荒茉谑录竭_(dá)時(shí)執(zhí)行處理蹬昌。

    Proactor 模式:Proactor 模式是一種異步 I/O 模型混驰,它允許程序在不等待事件到達(dá)的情況下繼續(xù)執(zhí)行。在 Proactor 模式中皂贩,操作系統(tǒng)通知程序事件已完成栖榨,而不是等待程序詢問(wèn)事件的狀態(tài)。

    總的來(lái)說(shuō)明刷,Reactor 模式適用于單線程環(huán)境婴栽,而 Proactor 模式適用于多線程環(huán)境。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辈末,一起剝皮案震驚了整個(gè)濱河市愚争,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挤聘,老刑警劉巖轰枝,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異组去,居然都是意外死亡鞍陨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門从隆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)诚撵,“玉大人,你說(shuō)我怎么就攤上這事键闺∈傺蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵艾杏,是天一觀的道長(zhǎng)韧衣。 經(jīng)常有香客問(wèn)我盅藻,道長(zhǎng)购桑,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任氏淑,我火速辦了婚禮勃蜘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘假残。我一直安慰自己缭贡,他們只是感情好炉擅,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著阳惹,像睡著了一般谍失。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莹汤,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天快鱼,我揣著相機(jī)與錄音,去河邊找鬼纲岭。 笑死抹竹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的止潮。 我是一名探鬼主播窃判,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼喇闸!你這毒婦竟也來(lái)了袄琳?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤燃乍,失蹤者是張志新(化名)和其女友劉穎跨蟹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體橘沥,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窗轩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了座咆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痢艺。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖介陶,靈堂內(nèi)的尸體忽然破棺而出堤舒,到底是詐尸還是另有隱情,我是刑警寧澤哺呜,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布舌缤,位于F島的核電站,受9級(jí)特大地震影響某残,放射性物質(zhì)發(fā)生泄漏国撵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一玻墅、第九天 我趴在偏房一處隱蔽的房頂上張望介牙。 院中可真熱鬧,春花似錦澳厢、人聲如沸环础。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)线得。三九已至饶唤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贯钩,已是汗流浹背搬素。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留魏保,地道東北人熬尺。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谓罗,于是被迫代替她去往敵國(guó)和親粱哼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容