TCP/IP协议栈的工作方式
TCP/IP 协议栈的工作方式
问的也就是HTTP 协议利用 TCP/IP 协议栈传输数据的过程。HTTP协议利用TCP/IP协议栈传输数据分为发送和接受。
发送过程:通过协议栈逐层向下,每一层都添加该层的专有头,逐层打包,由下层把数据发送出去。
浏览器显示了一个页面,你点击了一个链接,浏览器使用应用的端口号发起一个HTTP请求
然后加TCP头,记录了源端口号和目的端口号(一般是80)
然后加IP头,记录源IP地址和目标IP地址
然后加MAC头,记录下源MAC地址和目标MAC地址
然后就通过下层的网口发送出去了
接受过程:通过协议栈逐层向上,每一层都拆掉该层的专有头,逐层拆包,由上层接收本来的数据。
一个网口经过了一个网络包,把它拿进来交给网络包处理程序来处理
拆掉二层头,看看MAC地址跟自己的是不是相符,如果不相符,那不管它;如果MAC地址相符,继续拆三层头
拆掉三层头,看看IP地址跟自己的是不是相符,如果不相符,说明自己只是这个数据包的一个中转站,那我们把MAC地址更改,转发出去;如果IP地址相符,根据IP头里的标示知道四层是TCP地址还是UDP地址,我们假设是TCP的
拆掉四层头,看看这是个请求还是应答还是一个正常的数据包,如果是发起或应答那可能接下来要发一个回复包;如果是一个正常的数据包,就要交给上层来处理,网络包处理程序是不能拆七层头的,那么根据TCP头里的端口号交给对应的应用
应用拿到数据包想做什么处理就做什么处理,那就是应用的事了,比如说这个应用是浏览器,那浏览器当然是解析数据包(假设里面传送的是HTML),然后把页面显示出来
MAC地址的局限性和IP地址的连接性:因特网把各种网络连接起来,每个网络都使用不同的MAC地址,如果异构网络要互相通信就必须进行复杂的MAC地址转换工作,于是统一的IP地址把这个复杂问题解决了。IP地址本质上是终点地址,而MAC地址则是下一跳的地址,每跳过一次路由器都会改变。
#Java开发##学习路径#