1. TCP/IP协议是什么?
TCP/IP协议时一种网络体系模型的代名词,指的是多种协议的协议簇,即包含TCP、IP、MAC、UDP、HTTP、FTP等多种协议,它是四层网络模型,包含应用层、传输层、网络层、网络接口层,和OSI七层网络模型、五层网络模型略有区别。
2. 分层详解
TCP/IP的四层结构:应用层、网络层、传输层、网络接口层
常见的三种网络体系结构模型图
1. 应用层
TCP/IP协议的应用层是将OSI中的应用层、表示层、会话层合在了一起,它是直接为用户的应用程序提供服务,比如:浏览器和客户端的文本传输服务:HTTP协议和FTP协议;域名服务:DNS协议;电子邮件协议:SMTP协议;远程登录服务:TELMET协议和SSL协议;动态主机配置服务:DHCP协议等等。
2. 传输层
传输层是接口子网和资源子网的中间,他的作用是:处理应用层的数据,格式化数据流以及提供可靠传输,保证数据完好无误的传递到网络层。传输层常见的协议有:TCP协议和UDP协议。
TCP协议和UDP协议的区别:
3. 网络层
网络层进行网络连接的建立和终止以及负责寻址和路由选择,确保将数据传输到目标,同时也会处理输入数据包,判断是对数据进行转发还是传输给传输层。
4. 网络接口层
网络接口层包含了数据链路层和物理层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。
包、帧、数据报、段、消息的概述:
3.TCP/IP是如果进行数据通信的?
看下面这个图:
- 对于发送方发送数据包而言,数据包由顶向下,逐层增大:
网络协议栈从 Socket 发送缓冲区中,取出数据包;再按照 TCP/IP 栈,从上到下逐层处理
传输层:增加 TCP 头
网络层:增加 IP 头和执行路由查找确认下一跳的 IP,并按照 MTU 大小进行分片
数据链路层:分片后的网络包,再送到数据链路层,进行物理地址寻址,以找到下一跳的 MAC 地址,并且添加帧头和帧尾,放到发包队列中
驱动程序通过 DMA ,从发包队列中读出网络帧,并通过物理网卡把它发送出去
- 对于接收方接收数据包而言:
网卡中断处理程序会为网络帧分配内核数据结构(sk_buff),并将其拷贝到 sk_buff 缓冲区中;然后再通过软中断,通知内核收到了新的网络帧
内核协议栈从缓冲区中取出网络帧,并通过网络协议栈,从下到上逐层处理这个网络帧
- 数据链路层:在数据链路层检查报文的合法性,找出上层协议的类型,去掉帧头、帧尾,然后交给上一层网络层
- 网络层:网络层取出
IP
头,判断网络包下一步的走向,比如是交给上层处理还是转发。当网络层确认这个包是要发送到本机后,就会取出上层协议的类型(比如 TCP 还是 UDP),去掉IP
头,再交给传输层处理 - 传输层:传输层取出 TCP 头或者 UDP 头后,根据 源 IP、源端口、目的 IP、目的端口 四元组作为标识,找出对应的 Socket,并把数据拷贝到 Socket 的接收缓存中。
- 应用层:应用程序就可以使用 Socket 接口,读取到新接收到的数据
标签:协议,IP,网络层,网络,TCP,四层,传输层 From: https://www.cnblogs.com/chf333/p/16810762.html