TCP/IP协议分层模型
物理层:在以太网或电话线路等物理曾的设备上进行传输。在物理层面上使用的介质不同就会有不同的效果(带宽、可靠性、安全性、延迟)等
网络接口层(数据链路层):网络接口层利用以太网中的数据链路层进行通信,因此属于接口层。也就是说,它其实更像是一个驱动层的实现
互联网层(网络层):互联网使用IP协议,它相当于OSI模型中的第三层,IP协议基于IP地址进行分包数据。TCP/IP分层中的互联网层与传输层的功能通常由操作系统进行实现。连接互联网的所有主机和路由器必须都实现IP的功能,其他连接互联网的网络设备(网桥、中继器或集线器)就没有必要一定实现IP或TCP的功能
IP:是跨越网络传送数据包,IP隐含着部分数据链路层的功能,注意的是IP不具有重发机制。属于一个非可靠协议
ICMP:一旦IP数据包在发送的过程中没有准确的到达目的地,那么给发送端发送一个异常,ICMP则是这样的一个东西。有时也可以用来检验网络的健康程度
ARP:从IP数据包中解析出物理地址(MAC)的一个协议
传输层:有两个很著名的协议,TCP和UDP。TCP是一个面向连接的可靠协议,可以保证通信过程中的通信可到达问题,能够正确的处理丢包,传输顺序乱掉等异常情况,因此TCP还可以依赖带宽来缓解网络的拥堵情况。为了解决部分的不可靠情景,有时它至少需要7次的收发包(3次握手,4次挥手)才可以保证,这导致了一定情况下的浪费情况,也是正因为如此它在一些影音视频传输的情况下其实是并不特别优秀的。UDP,是一种不可靠的网络传输协议
应用层(会话层以上的分层):将OSI参考模型中的会话层,将OSI中的会话层、表示层、应用层的功能都集中到了应用程序中得以实现,这些功能有时候是一个程序进行实现,有时候则需要多个程序进行实现。TCP/IP应用大多数情况属于客户端/服务端模型,eq.应用层的FTP协议在连接的时候实现是两个TCP/IP的连接。在TCP/IP中进行网络管理的时候使用的一种SNMP的协议
在分层中,每进入下一个分层都会在数据中加上一个头,这个头则包含了协议的信息,而除了头之外的每一个信息都被认为是这个内容。
五个名词:包、帧、数据报、段、消息
包:认为是一个全能的术语
帧:数据链路层中的包的单位
数据报:是IP和UDP等网络层以上的分层中的单位
段:表示TCP数据流中的信息
消息:应用协议中的数据单位
假设甲给乙发送一个电子邮件,应用程序中首先会进行一个UTF-8的编码,这些编码相当于是OSI的表示层的功能。转化后可能并不会立马进行发送,有可能会有用户点击“收信”的时候才会进行发送,这可以看作是一个会话层的功能。应用在发送邮件的时候主要进行的是将应用的数据发送给下一层的TCP,再将进行实际的转发操作。
TCP根据应用的指示,负责建立连接、发送数据以及断开连接。TCP提供将应用层发来的数据顺利发送到对端的可靠传输,为了实现应用的指示,在应用层数据的前段附加一个TCP首部。首部包换了端口号和目标的端口号、序号以及校验和Check Sum。
IP在自己的地方把TCP首部和TCP数据结合起来当作自己的数据,并在TCP首部的前端再加上自己的IP首部,IP首部中包含接收端IP地址以及发送端的IP地址。以及判断是TCP还是UDP的标识位。IP包生成后根据路由控制表来决定IP包的路由和主机,用过APR查找就可以得到对应的MAC地址。
网络接口的处理:以太网驱动在IP数据的前提下,再加上了自己需要的接收端MAC地址,发送端MAC地址以及标志以及以太网的类型、协议。