TCP/IP协议学习
生活随笔
收集整理的這篇文章主要介紹了
TCP/IP协议学习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
計算機網路學得不好,首先先放個OSI七層網絡模型吧
在協議的控制下,上層對下層進行調用,下層對上層進行服務, 上下層間用交換原語交換信息。這樣可以提高傳輸速率,并且保證數據安全,所以說其實每一層都有存在的必要
但是現在互聯網上大家都有TCP/IP協議,可以說是某種黑話,他封裝了前三層
每一層也有不同的協議
?
在網絡通信的過程中,將發出數據的主機稱為源主機,接收數據的主機稱為目的主機。當源主機發出數據時,數據在源主機中從上層向下層傳送。源主機中的應用進程先將數據交給應用層,應用層加上必要的控制信息就成了報文流,向下傳給傳輸層。傳輸層將收到的數據單元加上本層的控制信息,形成報文段、數據報,再交給網際層。網際層加上本層的控制信息,形成IP數據報,傳給網絡接口層。網絡接口層將網際層交下來的IP數據報組裝成幀,并以比特流的形式傳給網絡硬件(即物理層),數據就離開源主機。 通過網絡傳輸,數據到達目的主機后,按照與源主機相反的過程,在目的主機中從下層向上層進行拆包傳送。首先由網絡接口層接收數據,依次剝離原來加上的控制信息,最后將源主機中的應用進程發送的數據交給目的主機的應用進程。 TCP/IP協議的基本傳輸單位是數據報(Datagram),TCP協議負責把數據分成若干個數據報,并給每個數據報加上報頭,報頭上有編號,以保證目的主機能將數據還原為原來的格式。IP協議在每個報頭上再加上接收端主機IP地址,這樣數據能找到自己要去的地方。如果傳輸過程中出現數據失真、數據丟失等情況,TCP協議會自動請求重新傳輸數據,并重組數據報。可以說,IP協議保證數據的傳輸,TCP協議保證數據傳輸的質量。 TCP/IP協議數據在傳輸時每通過一層就要在數據上加個報頭,其中的數據供接收端同一層協議使用,而在接收端,每經過一層要把用過的報頭去掉,這樣可以保證傳輸數據的一致性。 UDP?包的大小就應該是?1500 - IP頭(20) - UDP頭(8) = 1472(Bytes)TCP?包的大小就應該是?1500 - IP頭(20) - TCP頭(20) = 1460 (Bytes) 在用UDP局域網通信時,經常發生“Hello World”來進行測試,但是“Hello World”并不滿足最小有效數據(64-46)的要求,為什么小于18個字節,對方仍然可用收到呢?因為在鏈路層的MAC子層中會進行數據補齊,不足18個字節的用0補齊。但當服務器在公網,客戶端在內網,發生小于18個字節的數據,就會出現接收端收不到數據的情況。
用UDP協議發送時,用sendto函數最大能發送數據的長度為:65535- IP頭(20) - UDP頭(8)=65507字節。用sendto函數發送數據時,如果發送數據長度大于該值,則函數會返回錯誤。??
用TCP協議發送時,由于TCP是數據流協議,因此不存在包大小的限制(暫不考慮緩沖區的大小),這是指在用send函數時,數據長度參數不受限制。而實際上,所指定的這段數據并不一定會一次性發送出去,如果這段數據比較長,會被分段發送,如果比較短,可能會等待和下一次數據一起發送。
RPC(Remote Procedure Call)—遠程過程調用,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程序在內的應用程序更加容易。?
轉載于:https://www.cnblogs.com/BobHuang/p/11198770.html
總結
以上是生活随笔為你收集整理的TCP/IP协议学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【UOJ 51】最接近神的人
- 下一篇: 记录 spring 使用@Value获取