TCP/IP协议栈的工作方式

TCP/IP 协议栈的工作方式

问的也就是HTTP 协议利用 TCP/IP 协议栈传输数据的过程。HTTP协议利用TCP/IP协议栈传输数据分为发送和接受。

  1. 发送过程:通过协议栈逐层向下,每一层都添加该层的专有头,逐层打包,由下层把数据发送出去。

    1. 浏览器显示了一个页面,你点击了一个链接,浏览器使用应用的端口号发起一个HTTP请求

    2. 然后加TCP头,记录了源端口号和目的端口号(一般是80)

    3. 然后加IP头,记录源IP地址和目标IP地址

    4. 然后加MAC头,记录下源MAC地址和目标MAC地址

    5. 然后就通过下层的网口发送出去了

  2. 接受过程:通过协议栈逐层向上,每一层都拆掉该层的专有头,逐层拆包,由上层接收本来的数据。

    1. 一个网口经过了一个网络包,把它拿进来交给网络包处理程序来处理

    2. 拆掉二层头,看看MAC地址跟自己的是不是相符,如果不相符,那不管它;如果MAC地址相符,继续拆三层头

    3. 拆掉三层头,看看IP地址跟自己的是不是相符,如果不相符,说明自己只是这个数据包的一个中转站,那我们把MAC地址更改,转发出去;如果IP地址相符,根据IP头里的标示知道四层是TCP地址还是UDP地址,我们假设是TCP的

    4. 拆掉四层头,看看这是个请求还是应答还是一个正常的数据包,如果是发起或应答那可能接下来要发一个回复包;如果是一个正常的数据包,就要交给上层来处理,网络包处理程序是不能拆七层头的,那么根据TCP头里的端口号交给对应的应用

    5. 应用拿到数据包想做什么处理就做什么处理,那就是应用的事了,比如说这个应用是浏览器,那浏览器当然是解析数据包(假设里面传送的是HTML),然后把页面显示出来

MAC地址的局限性和IP地址的连接性:因特网把各种网络连接起来,每个网络都使用不同的MAC地址,如果异构网络要互相通信就必须进行复杂的MAC地址转换工作,于是统一的IP地址把这个复杂问题解决了。IP地址本质上是终点地址,而MAC地址则是下一跳的地址,每跳过一次路由器都会改变。

#Java开发##学习路径#
全部评论
网络这块太复杂了
点赞 回复 分享
发布于 2022-03-11 19:02

相关推荐

自从我室友在计算机导论课上听说了“刷 LeetCode 是进入大厂的敲门砖”,整个人就跟走火入魔了一样。他在宿舍门口贴了一张A4纸,上面写着:“正在 DP,请勿打扰,否则 Time Limit Exceeded。”日记本的扉页被他用黑色水笔加粗描了三遍:“Talk is cheap. Show me the code。”连宿舍聚餐,他都要给我们讲解:“今天的座位安排可以用回溯算法解决,但为了避免栈溢出,我建议用动态规划。来,这是状态转移方程:dp[i][j] 代表第 i 个人坐在第 j 个位置的最优解。”我让他去楼下取个快递,他不直接去,非要在门口踱步,嘴里念念有词:“这是一个图的遍历问题。从宿舍楼(root)到驿站(target node),我应该用 BFS 还是 DFS?嗯,求最短路径,还是广度优先好。”和同学约好出去开黑,他会提前发消息:“集合点 (x, y),我们俩的路径有 k 个交点,为了最小化时间复杂度,应该在 (x/2, y/2) 处汇合。”有一次另一个室友低血糖犯了,让他帮忙找颗糖,他居然冷静地分析道:“别急,这是一个查找问题。零食箱是无序数组,暴力查找是 O(n)。如果按甜度排序,我就可以用二分查找,时间复杂度降到 O(log n)。”他做卫生也要讲究算法效率:“拖地是典型的岛屿问题,要先把连通的污渍区块都清理掉。倒垃圾可以用双指针法,一个指针从左往右,一个从右往左,能最快匹配垃圾分类。”现在我们宿舍的画风已经完全变了,大家不聊游戏和妹子,对话都是这样的:“你 Two Sum 刷了几遍了?”“别提了,昨天遇到一道 Hard 题,我连暴力解都想不出来,最后只能看题解。你呢?”“我动态规划还不行,总是找不到最优子结构。今天那道接雨水给我整麻了。”……LeetCode 真的害了我室友!!!
老六f:编程嘉豪来了
AI时代还有必要刷lee...
点赞 评论 收藏
分享
评论
5
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务