• [知了堂学习笔记]_网络基础知识_2.TCP/IP协议、UDP协议、握手


    TCP/IP是“Transmission Control Protocol/Internet Protocol”的简写,中文译名为传输控制协议/互联网络协议, TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在INTERNET中几乎可以无差错地传送数据。 对普通用户来说,并不需要了解网络协议的整个结构,仅需了解IP的地址格式,即可与世界各地进行网络通信。

    IP协议已经成为世界上最重要的网际协议。

    IP的功能定义在由IP头结构的数据中。IP是网络层上的主要协议,同时被TCP协议和UDP协议使用。

    TCP/IP数据报的结构

     

    2.1IP协议

    IP(Internet protocol),这里的IP不是值得我们通常所说的192.168.1.1.这个IP指的是一种协议,而后面的数字值得是IP地址。IP协议的作用在于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址,和MAC地址(Media Access Control Address)。由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址。而MAC地址是全球唯一的,除去人为因素外不可能重复。举一个现实生活中的例子,IP地址就如同是我们居住小区的地址,而MAC地址就是我们住的那栋楼那个房间那个人。关于MAC地址,

    使用 ARP 协议凭借 MAC 地址进行通信,IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP 协议(Address Resolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。

     你向另外一台电脑发送一条信息,怎么再茫茫人海中瞬间找到对方,以下是图示:

     

     

    2.2TCP协议

    如果说IP协议是找到对方的详细地址。那么TCP协议就是把安全的把东西带给对方。各有分工,互不冲突。

          按层次分,TCP属于传输层,提供可靠的字节流服务。什么叫字节流服务呢?这个名字听起来让人不知所以然,下面听下我通俗的解释。所谓的字节流,其实就类似于信息切割。比如你是一个卖自行车的,你要去送货。安装好的自行车,太过庞大,又不稳定,容易损伤。不如直接把自行车拆开来,每个零件上都贴上收货人的姓名。最后送到后按照把属于同一个人的自行车再组装起来,这个拆解、运输、拼装的过程其实就是TCP字节流的过程。

         我们看下严谨的学术表达是怎样的:

         所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。

         为了确保信息能够确保准确无误的到达,TCP采用了著名的三次握手策略(three-way handshaking).下面我写一段对话来模拟下这三次握手。

    和其他网络协议一样,TCP/IP有自己的参考模型用于描述各层的功能。TCP/IP协议簇参考模型和OSI参考模型的比较如图:

     

     

    2.2区别

    1、TCP/IP参考模型实现了OSI模型中的所有功能。

    2、不同之处是TCP/IP协议模型将OSI模型的部分层进行了合并。

    3、OSI模型对层的划分更精确,而TCP/IP模型使用比较宽的层定义。

    2.3各层功能

    TCP/IP协议簇包括四个功能层:应用层、传输层、网络层及网络接口层。

    这四层概括了相对于OSI参考模型中的七层:

     

    TCP/IP通信数据流:

     

    1、网络接口层(链路层)

    网络接口层包括用于物理连接、传输的所有功能。OSI模型把这一层功能分为两层:物理层和数据链路层,TCP/IP参考模型把两层合在一起。

    2、网络层(Internet层)

    网络层由在两个主机之间通信所必须的协议和过程组成。这意味着数据报文必须是可路由的。

    3、传输层

    这一层支持的功能包括:为了在网络中传输对应用数据进行分段,执行数学检查来保证所收数据的完整性,为多个应用同时传输数据多路复用数据流(传输和接收)。这意味着该层能识别特殊应用,对乱序收到的数据进行重新排序。

    当前的主机到主机层包括两个协议实体:传输控制协议(TCP)和用户数据报协议(UDP)。

    4、应用层

    应用层协议提供远程访问和资源共享。应用包括Telnet服务、FTP服务、SMTP服务和HTTP服务等,很多其他应用程序驻留并运行在此层,并且依赖于底层的功能。该层是最难保护的一层。

    2.3关系

    TCP/IP组的四层、OSI参考模型和常用协议的对应关系如图:

     

    2.4UDP协议

    UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

    UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

    与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

    3.握手

    握手是在通信电路建立之后,信息传输开始之前。

    在数据通信中,由硬件或软件管理的事件序列,在进行信息交换之前,需要对操作模式的状态互相达成协定。

    在接收站和发送站之间建立通信参数的过程。

    握手用于达成参数,如信息传输率,字母表,奇偶校验, 中断过程,和其他协议   特性。

    3.1TCP握手协议

    TCP会话期间,有三次握手.即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP,由于TCP需要时刻跟踪.这需要额外开销,使得TCP的格式有些显得复杂。

    TCP握手协议释TCP/IP协议巾。TCP协议提供可靠的连接服务.采用三次握手建立一个连接。

    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN—SEND状态,等待服务器确认;

    第二次握手:服务器收到syn包,必须确认客户的SYN(ack=i+j),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN—RECV状态;

    第三次握手:客户端收到服务器的SYN+ACK包.向服务器发送确认包ACK(ack=k+1).此包发送完毕.客户端和服务器进入ESTABI.ISHED状态。完成三次握手。完成三次握手.客户端与服务器开始传送数据。

    以上是我这讲的主要内容,下一讲将为大家讲解VPN和路由交换协议
    若以上知识点讲解的不够仔细的请各位大神多多包涵和指正,需要学习更多关于软件知识的博友可以进入知了堂社区:http://www.zhiliaotang.com/portal.php
  • 相关阅读:
    今天一天看一天文档
    ImportError: No module named _md5解决方案
    Spelling Corrector & sphinx typo search
    linux下使用ipython的pylab模式时不显示图形的问题解决方案
    error: error in setup script: command 'build_exe' has no such option 'includefiles'
    【转】oracle之包的创建和应用
    ADO.NET 与 ORACLE
    SQL注入大全
    【转】oracle之循环语法
    ASP.NET 防止按钮多次提交解决方法
  • 原文地址:https://www.cnblogs.com/hzz1997/p/8093679.html
Copyright © 2020-2023  润新知