对于同一台设备,在进行进程间的通信,可以采用管道,消息队列,信号,共享内存等多种方式,而对于不同设备间进程的通信,就需要进行网络通信,而由于设备的多样性,为了兼容不同类型的设备,所以需要设计出一套通用的网络协议:即TCP/IP网络模型
位于TCP/IP网络模型的最上层,是使用手机或电脑的用户能够直接体验到的一层,应用层负责将数据传输到下一层(传输层).
应用层专注于为用户提供相关的功能,比如HTTP,FTP,Telnet,DNS,SMTP等.
应用层不用关系数据是如何传输的,就像我们在挑选完商品后有快递公司负责派送,我们不需要关心商品具体是如何被派送的.
应用层位于操作系统的用户态,而传输层及其下面的层位于内核态.
传输层的设计理念是简洁,高效,专注.
传输层是为应用层提供网络支持的.专注于确定发送方和接收方的设备上某个具体的应用,为了达到这一目的.传输层通过一个叫"端口"的编号来区分设备上的不同应用.
传输层的两个主要的协议是TCP和UDP.
TCP的全称是传输控制协议.大部分应用使用的正是TCP协议,TCP相比UDP而言多了许多特性,包括流量控制,拥塞控制,超时重传等.依据这些特性保证了数据报可靠地传输到接收方.
UDP相较于TCP来说简单很多,只需要发送数据包,不需要考虑数据是否能够抵达对方,但它实时性相对更好,传输效率更高.而UDP实现可靠传输则需要在应用层实现TCP的这些特性(但这并不是一个简单的事情额…).
应用层的数据有时候会很大,如果直接传输既不容易控制,又会消耗大的成本(比如因为网络收敛导致发送的数据损坏了而需要重新发送时需要重新发送所有数据),当传输层的数据包大小超过MSS(TCP最大报文段长度),就要将数据包分块,而分块的好处是即使在传输过程中某个分块损坏需要重新发送也只需要发送这一个分块,在TCP协议中,这样一个分块称为一个TCP段
由于传输层专注于服务于应用层,作为应用层的一个媒介,因此,传输的主要功能则是由网络层实现.
网络层的主要功能分为两部分,一部分为寻址,另一部分为路由.不同设备之间通过复杂的网络连接,而网络由交换机,路由器等设备共同连接构成.在错综复杂的网络环境中,找到对应的路径和节点就叫做寻址(从一个节点应该朝哪个方向走),而路由则是从一台设备规划处一条路径到达下一个节点. 寻址就像是导航,而路由则是操纵方向盘
网络层最常用的是IP协议,IP协议将传输层的部分作为数据,再加上IP报头组成IP报文.如果IP报文大小超过MTU(以太网中一般为1500字节)则会再次分片.
为了区分不同的设备,引出IP地址,IP地址有网络号和主机号组成.网络号标记设备位于哪个子网,主机号区分子网中的哪个主机.网络号和主机号由子网掩码进行区分(子网掩码和IP地址与运算得到网络号;取反后的子网掩码和IP地址与运算得到主机号)
将IP报文传输给网络接口层,在IP头部加上MAC头部,并封装成数据帧发送到网络上.
什么是以太网?以太网就是电脑上的以太网接口,WI-FI接口,路由器上的千兆,万兆以太网口.以太网就是在局域网内,将附近的设备相连起来可以进行通讯的一种技术.
在以太网中,无法通过IP地址去定位目标地址,而需要MAC地址.通过ARP协议获取对方的MAC地址.