初入网络系列笔记(1)TCP/IP基础

时间:2023-03-09 08:30:32
初入网络系列笔记(1)TCP/IP基础

一、借鉴说明,本博文借鉴以下博文

  1.BlueTzar,TCP/IP四层模型,
http://www.cnblogs.com/BlueTzar/articles/811160.html

  2.叶剑峰,漫谈TCP,
http://www.cnblogs.com/yjf512/p/5909031.html

  3.bizhu,TCP和UDP的区别(转),
http://www.cnblogs.com/bizhu/archive/2012/05/12/2497493.html

  4.任智康,TCP/IP、Http的区别,
http://www.cnblogs.com/renyuan/archive/2013/01/19/2867720.html

二、关于TCP/IP

  • 基础知识

  TCP/IP四层模型是由ISO制定的OSI模型演化来的,是一种简易的模型表现。如下图所示,为OSI模型与TCP/IP模型的对比。

初入网络系列笔记(1)TCP/IP基础

  其中,OSI中的应用层、表示层、会话层合并成TCP/IP的应用层,OSI中的数据链路层、物理层合并成TCP/IP的网络接口层。

  各层说明:

  1、主机到网络层

  实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。

  2、网络互连层

  网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)。

  网络互连层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,网络互连层还需要完成拥塞控制的功能。

  3、传输层

  在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。

  TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。

  UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。

  4、应用层

  TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的。

  • 为什么要分层?

  分层实际上是一个抽象的过程,和我们写代码的时候的封装是一样的。你要说,我只有一层,一个协议把所有从程序到物理网络的所有东西都描述一遍,这个可以不可以?可以。但是,这样你协议写多了以后,就会发现,物理网络部分几乎所有协议都一样,那么我倒不如另外写一个协议,然后其他协议使用include的方式来包含这个协议。好了,网络传输层就出来了。后面的原理也几乎一样了。所以分层是必要的。

  • 为什么分为四层?

  代码中有个过度设计的概念,分层中也照样有个过度设计的概念。基本上,分层层数越多,是越符合抽象的。但是到最后我们会发现,有一个协议整篇都是include,自己实际上并没有任何实质的东西。这个就是过度设计。基本上我们琢磨来琢磨去,按照上面说的,分为四层,是个很合适的设计。四层中的每一层都有自己负责的一块内容,内容大小适中,又没有相互耦合的地方。四层中的每一层都不可缺少。