TCP/IP

物理層/鏈路層/網絡層/運輸層/應用層    IP網絡層是層三
IP地址
A類:    0     7位網絡號    24位主機號
B類: 10   14位網絡號   16位主機號
C類:110   21位網絡號    8位主機號

IP網絡包  46-1500  就是包括IP頭+UDP頭

網絡字節序是大頭 BIG ENDIAN  20字節IP頭
IP頭裏的長度字段 可以小於46字節.
首部檢驗和 是根據IP首部計算的檢驗和碼, 它不對首部後面的數據進行計算.

子網把 主機號再分成一個子網號+主機號
與30個C類地址相比, 用一個包含30個子網的B類地址的好處是, 它可以縮小路由表的規模. 因爲路由表變樹形了, 不同局域網裏面的路由器的路由表可以變很小, 管自己子網裏面就行了.

ARP是 如果沒有MAC地址寫到頭上去, 那麼就要發這個ARP報文, 讓其他主機把MAC地址發過來.  ARP會超時.
鏈路頭是14個字節長度.

PING就是ICMP echo

IP選路:
route 
netstat -rn
G標誌是間接路由: IP不是路由器地址, MAC地址是路由器地址
沒有G標誌是直接路由: IP和MAC都是路由器地址
U: 該路由可以使用
H: 網絡地址, 匹配網絡號子網號就行了
沒有H: 子網地址, 主機號也要匹配
default: 沒有找到路由, 就用這個路由選項

IP頭20字節
版本, 首部長度, TOS, 總長度, 標識, 標誌, 分片偏移, TTL, 協議號, 檢驗和, IP源地址, 目的地址

UDP頭 8字節
2字節源端口號
目的端口號
2字節UDP長度
2字節UDP檢驗和

UDP檢驗和可選
僞首部 12字節  IP源,目的, +4字節
IP檢驗和只檢查IP首部, UDP檢驗僞首部+數據

IP分片: 只有UDP才分
包括IP頭 >1500就要分片
所以1472就要分片  + 20(IP頭) + 8(UDP頭)
第二個分片的時候  就不需要填寫UDP頭了   所以第二個分片1480分片  + 20(IP頭)


TCP提供一種面向連接的, 可靠的字節流服務
TCP首部20字節
源,目的端口號
序號, 確認序號 ..
檢驗和覆蓋了整個TCP報文段: TCP首部+TCP數據
ACK序號是接收序號+1  這個值就是對端下一個要發包的頭字節

建立一個連接需要3次握手 
client:SYN  
server:SYN-ACK 
client:ACK

終止一個連接需要4次握手 half-close半關閉狀態  
client:FIN
server:FIN_ACK
server:FIN
client:FIN_ACK

MSS, TCP中的最大報文段長度, 即每一個包都用這個長度發送數據

TCP成塊數據流流控: 滑動窗口協議
win長度位0, 即TCP rcv_buf長度不夠, 緩存不了包了, 對端就不能發了

TCP的超時與重傳:
ack一直反覆這個過來, 直到你傳回來
慢啓動(slow start)
擁塞控制算法
congestion window擁塞窗口:cwnd

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章