資料報傳送與鄰居子系統

2021-05-22 21:16:00 字數 719 閱讀 9967

資料報從l4傳到ip後,ip呼叫路由子系統來查詢路由,並且在查詢到路由後,建立乙個新的鄰居項(struct neigh)

與該路由項繫結。該neigh的初始狀態為incomplete,此時在呼叫傳送函式ip_finish_output2中呼叫

if (dst->hh)

return neigh_hh_output(dst->hh, skb);

else if (dst->neighbour)

return dst->neighbour->output(skb);

處於incomplete狀態下,output函式為neigh_resolve_output

該函式為:

if (!dst || !(neigh = dst->neighbour))

goto discard;

__skb_pull(skb, skb_network_offset(skb));

if (!neigh_event_send(neigh, skb))

在__neigh_event_send函式中,資料報被存入快取佇列

if (neigh->nud_state == nud_incomplete)

__skb_queue_tail(&neigh->arp_queue, skb);

}rc = 1;

}可以看出,如果在neigh的arp未收到應答包前,如果發出了多個資料報,且個數超過了快取佇列的大小,則會直接丟棄

網絡卡傳送與接收資料報

網絡卡如何傳送資料報 ip報文可以看作乙個包。linux網絡卡驅動程式,將ip包新增14位元組的mac包頭,構成mac包。mac包中含有傳送端和接收端的mac位址資訊。既然是驅動程式建立的mac包頭資訊,當然可以隨便輸入位址資訊的。主機偽裝就是這麼實現的。驅動程式將mac包拷貝到網絡卡晶元內部的緩衝...

鄰居子系統 1 1

1.什麼是鄰居子系統 鄰居 是指同乙個ip區域網內的主機,或者鄰居之間在三層上僅相隔一跳距離。以ipv4 傳送資料為例,在傳送資料時,先進行路由查詢,如果查詢到目的位址路徑,再檢視鄰居表中是否存在響應的對映關係,如果沒有則新建鄰居關係,然後判斷鄰居是否可用,如果不可用則將報文快取到傳送佇列,然後傳送...

tcp的資料報傳送與網路佇列長度

假設tcp的擁塞控制演算法為tcp reno,ssthresh 20,擁塞視窗的初始值為1.假設網路鏈路為n0 b1,d1 n1 b1,d2 n2,其中 b,d 分別代表頻寬和時延,b1 b2。假設這條鏈路僅有乙個tcp session。現在,從理論上分析下這條鏈路的丟包情況。根據之前的分析 1 t...