精华内容
下载资源
问答
  • 一、TCP/IP协议族体系结构以及主要协议 1)数据链路层 2)网络层 3)传输层 4)应用层 二、封装 三、分用 四、socket和TCP/IP协议族的关系 前言 因特网中使用的主流协议族是TCP/IP协议族,它是一个分层、多...

    目录

    前言

    一、TCP/IP协议族体系结构以及主要协议

     1)数据链路层

    2)网络层

    3)传输层 

    4)应用层

    二、封装

    三、分用

    四、socket和TCP/IP协议族的关系


    前言

    因特网中使用的主流协议族是TCP/IP协议族,它是一个分层、多协议的通信体系。本文将简要讨论TCP/IP 协议族各层包含的主要协议,以及它们之间是如何协作完成网络通信的。


    一、TCP/IP协议族体系结构以及主要协议

    TCP/IP 协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层、应用层。每层完成不同的功能,且通过若干协议来实现,上层协议使用下层协议提供的服务

     1)数据链路层

    数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网、令牌环等)上的传输。不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供一个统一的接口。

    数据链路层两个常用的协议:ARP协议Address Resolve Protocol,地址解析协议)和RARP协议Reverse Address Resolve Protocol,逆地址解析协议)。它们实现了IP地址和机器物理地址之间的相互转换。(机器物理地址通常是MAC,以太网、令牌环和802.11无线网络都是用MAC地址)

    网络层使用IP地址寻址一台机器,而数据链路层使用物理地址寻址一台机器,因此网络层必须先将目标机器的IP地址转换成其物理地址,才能使用数据链路层提供的服务,这就是ARP协议的用途

    RARP协议仅使用在网络上的某些无盘工作站。因为缺乏存储设备,无盘工作站无法记住自己的IP地址,但它们可以利用网卡上的物理地址来向网络管理者(服务器或网络管理软件)查询自身的IP地址。运用RARP服务的网络管理者通常存有该网络所有机器的物理地址到IP地址的映射。

     

    2)网络层

    网络层实现数据包的选路和转发。通信的两台主机一般不是直接相连的,而是通过多个中间结点(路由器)连接的。 网络层的任务就是选择这些中间节点,以确定两台主机之间的通信路径。同时,网络层对上层协议隐藏了网络拓扑连接的细节,使得在传输层和网络应用程序看来,通信的双方式直接相连的。

    网络层最核心的协议是IP协议(Internet Protocol 因特网协议)。IP协议根据数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目标主机,那么IP协议就为它寻找一个合适的下一跳(next hop)路由 ,并将数据包交付给该路由器来转发,多次重复这一过程,数据包最终到达目标主机,或者由于发动失败而被丢弃。所以,IP协议使用逐跳(hop by hop)方式确定通信路径

    网络层另一个重要的协议是ICMP协议Internet control message Protocol 因特网控制报文协议)。其主要用于检测网络连接,ICMP协议的报文格式如下:

    • 8位类型字段用于区分报文类型。它将ICMP报文份分为两大类:

    一类是差错报文,这类报文主要用来回应网络错误,比如目标不可达(类型值为3)和重定向(类型值为5)

    另一类是查询报文,这类报文用来查询网络信息,例如:ping程序就是使用ICMP报文查看目标是否可到达(类型值为8)

    • 8位代码字段用来进步细分不同的条件。

    例如:重定向报文使用代码值为0表示网络重定向,代码值为1表示主机重定向。

    • 16位校验和字段对整个报文(包括头部和内容部分)进行循环冗余校验(CRC),以检验报文在传输过程中是否顺坏。

    【注意】ICMP协议并非严格意义上的网络协议,因为它使用处于同一层的IP协议提供的服务。(一般来说,上层协议使用下层协议提供的服务)

     

    3)传输层 

    传输层为两台主机上的应用程序提供端到端(end to end)的通信。传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程。

    【注释】

    垂直实线箭头表示TCP/IP 协议族各层之间的实体通信(数据包确实是沿着这些线路传递的);水平的虚线箭头表示逻辑通信线路。

    数据链路层(驱动程序)封装了物理网络的电气细节;网络层封装了网络连接的细节;传输层为应用程序封装了一条端对端的逻辑通信链路,它负责数据的收发、链路的超时重连等。

    传输层三个主要的协议:TCP协议、UDP协议和SCTP协议

    • TCP协议(Transmission Control Protocol,传输控制协议)

    TCP协议为应用层提供可靠的面向连接的基于流(stream)的服务

    TCP协议使用超时重传数据确认等方式确保数据包被正确地发送到目的端,因此TCP服务是可靠的。

    使用TCP协议通信的双方必须先建立TCP连接,并在内核中为该连接维持一些必要的数据结构,比如连接的状态、读写缓冲区及定时器等。当通信结束时,双方必须关闭连接以释放这些内核数据。

    TCP服务是基于流的,基于流的的数据没有边界(长度)限制,它源源不断地从通信的一端流向另一端。发送端可以逐个字节地向数据流中写入数据,接收端可以逐个字节地将其读出。

    • UDP协议(User Datagram Protocol ,用户数据报协议)

    UDP协议为应用层提供不可靠无连接基于数据报的服务

    “不可靠”意味着UDP协议无法保证数据从发送端正确地传送到目的端。如果数据在中途丢失,或者目的端通过数据校验发现数据错误而将其丢弃,则UDP协议只是简单地通知应用程序发送失败。因此,使用UDP协议的应用程序通常要自己处理数据确认、超时重传等逻辑。

    UDP协议是无连接的,即通信双方不保持一个长久的联系,因此应用程序每次发送数据都要明确指定接收端的地址(IP地址等信息)。

    基于数据报的服务,每个UDP数据报都有一个长度,接收端必须以该长度为最小单位将其所有内容一次性读出,否则数据将被截断。

    • SCTP协议(Stream Control Transmission Protocol,流控制传输协议)

    SCTP协议是为了在因特网上传输电话信号而设计的。

     

    4)应用层

    应用层负责处理应用程序的逻辑。 

    数据链路层、网络层和传输层负责处理网络通信细节,这部分必须既稳定又高效,因此它们都是在内核空间实现的;而应用层负责处理众多逻辑,比如文件传输、名称查询和网络管理等,因此是在用户空间实现。(有少数服务器程序是在内核中实现的,这样代码就无须在用户空间和内核空间来回切换(主要是数据的复制),极大地提高了工作效率,不过这种代码实现比较复杂,不够灵活,且不便移植)

    应用层常见协议

    • ping是应用程序,而不是协议。
    • telnet协议是一种远程登录协议,它使我们能在本地完成远程任务。
    • OSPF(Open Shortest Path First,开放最短路径优先)协议是一种动态路由更新协议,用于路由器之间的通信,以告知对方各自的路由信息
    • DNS(Domain Name Service ,域名服务)协议提供机器域名到IP地址的转换。

    应用层协议(或程序)可能跳过传输层直接使用网络层提供的服务,比如ping程序和OSPF协议。应用层协议(或程序)通常既可以使用TCP服务,又可以使用UDP服务,比如DNS协议。可以通过/etc/services文件查看所有知名的应用协议,以及它们都能使用哪些传输层服务。


    二、封装

    【问题】上层协议是如何使用下层协议提供服务的呢?

    【答案】封装。应用程序数据在发送到物理网络上前,将沿着协议栈从上向下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时还包括尾部信息),以实现该层的功能,这个过程就是称为封装

    经过TCP封装的数据称为TCP报文段(TCP message segment),简称TCP段。 

    TCP协议为通信双方维持一个连接,并且在内核中存储相关数据。这部分数据中的TCP头部信息和TCP内核缓冲区(发送缓冲区或接收缓冲区)数据一起构成了TCP报文段。

    当发送端应用程序使用send(或write)函数向一个TCP连接写入数据时,内核中TCP模块首先把这些数据复制到与该连接对应的TCP内核发送缓冲区中,然后TCP 模块调用IP模块提供的服务,传递参数包括TCP头部信息和TCP发送缓冲区中数据(即TCP报文段)。

    经过UDP封装的数据称为UDP数据报(UDP segment)

    UDP对应程序数据的封装与TCP类似,不同的是,UDP无须为应用层数据保存副本,因为它提供的服务是不可靠的。当一个UDP数据报被成功发送后,UDP内核缓冲区中的该数据报就被丢弃了。如果应用层程序检测到该数据报未能被接收端正确接收,并打算重发这个数据报,则应用层需要重新从用户空间将该数据报拷贝到UDP内核发送缓冲区。

    经过IP封装后的数据称为IP数据报(IP segment

    IP数据报也包括头部信息和数据部分,其数据部分就是TCP报文段、UDP数据报或SIMP报文。

    经过数据链路层封装的数据称为帧(frame)

    例如:以太网上传输的是以太网帧,而令牌环网络上传输的是令牌环帧

    帧才是最终在物理网络上传输的字节序列。

    至此,封装过程完成。


    三、分用

    当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用(demultipexing).分用是依靠头部信息中类型字段实现的。

    因为IP协议、ARP协议和RARP协议都使用帧传输数据,所以帧的头部需要提供某个字段(具体情况取决于帧的类型)来区分它们。

    同样,ICMP协议、TCP协议和UDP协议都使用IP协议,所以IP数据报的头部采用16位的协议字段来区分它们。

    TCP报文段和UDP数据报则通过其头部的16位端口号(port number)字段来区分上层应用程序。(例如:DNS协议对应的端口号是53,HTTP协议对应的端口是80).

    帧通过上述分用步骤后,最终将封装前的原始数据送到目标服务(ARP服务、RARP服务、ICMP服务或应用程序)。这样,从顶层目标服务来看,封装和分用似乎没有发生过。


    四、socket和TCP/IP协议族的关系

    数据链路层和网络层、传输层协议是在内核中实现的。因此操作系统需要实现一组系统调用,使得应用程序能够访问这些协议提供的服务。实现这组系统调用的API(应用程序接口)主要有两套:socket和XTI(XTI现在基本不再使用)。

    由socket定义的这一组API提供如下两点功能:

    一是将应用程序数据从用户缓冲区中复制到TCP/UDP内核发送缓冲区,以交付内核来发送数据,或从内核TCP/UDP接收缓冲区中复制数据到用户缓冲区,以读取数据;

    二是应用程序可以通过它们来修改内核中各层协议的某些头部信息或其他数据结构,从而精细地控制底层通信行为。

    socket是一套通用网络编程接口,它不但可以访问内核中TCP、IP协议栈,而且可以访问其他网络协议栈(例如:X.25协议栈、Unix本地域协议栈等)

     

    展开全文
  • 应用层:http dns TFTP 、Telnet 、FTP、SMTP、NFS、Rlogin、 SNMP(UDP)…… 传输层:TCP、UDP 网络层: ICMP(ping tracerute) RIP(路由协议使用UDP) 数据链路层:ARP、RARP、ppp ...运行于TCP协议之上的协议: H...

    应用层:http dns TFTP 、Telnet 、FTP、SMTP、NFS、Rlogin、 SNMP(UDP)……
    传输层:TCP、UDP
    网络层: ICMP(ping tracerute) RIP(路由协议使用UDP)
    数据链路层:ARP、RARP、ppp
    物理层:比特流

    ------以上待确认--------

    运行于TCP协议之上的协议:
    HTTP协议:超文本传输协议,用于普通浏览
    HTTPS协议:安全超文本传输协议,身披SSL外衣的HTTP协议
    FTP协议:文件传输协议,用于文件传输
    POP3协议:邮局协议,收邮件使用
    SMTP协议:简单邮件传输协议,用来发送电子邮件
    Telent协议:远程登陆协议,通过一个终端登陆到网络
    SSH协议:安全外壳协议,用于加密安全登陆,替代安全性差的Telent协议
    运行于UDP协议之上的协议:
    DHCP协议:动态主机配置协议,动态配置IP地址
    NTP协议:网络时间协议,用于网络时间同步
    BOOTP协议:引导程序协议,DHCP协议的前身,用于无盘工作站从中心服务器上获取IP地址
    ————————————————
    版权声明:本文为CSDN博主「Y先森0.0」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_39382769/article/details/91865021

    举一个例子:

    我们用HTTP 举例来说明,首先作为发送端的客户端在应用层(HTTP 协议)发出一个想看某个Web 页面的HTTP 请求。接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP 协议),增加作为通信目的地的MAC 地址(media access control address媒体通过控制地址,也称局域网地址,MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。)后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。

    与HTTP 关系密切的协议:IP、TCP 和DNS

    在到达通信目标前的中转过程中,那些计算机和路由器等网络设备只能获悉很粗略的传输路线。这种机制称为路由选择(routing)

    所以进行网络编程解决两个问题:1.在网络中如何找到一台主机或者多台主机:依靠网络层的IP解决

    2.当双方连接成功之后,如何进行可靠的传输:针对传输层进行编程,传输层的主要两个协议

    TCP VS UDP

    1.Tcp 面向连接,提供可靠的传输; UDP面向无连接,提供不可靠传输

    2. Tcp 提供流量控制 ; UDP不提供流量控制

    3. Tcp 保证传输数据顺序 ; UDP不保证传输顺序,也就是可能是乱序收包

    4. TCP 面向字节流 ; UDP 面向数据包
    原文链接:https://blog.csdn.net/weixin_41907291/article/details/83821222

    展开全文
  • TCP/IP协议族

    2021-10-16 11:00:11
    写在前面: 最近遇到TCP/IP协议的有关内容,于是想学习一下具体的内容,结合几篇优秀的文章,做一点整理。 参考链接: https://blog.csdn.net/weixin_44198965/article/details/90083126 ...TCP/IP模型: ...

    写在前面:
    最近遇到TCP/IP协议的有关内容,于是想学习一下具体的内容,参考了几篇优秀的文章和一些文档,做一点知识的整理。

    TCP/IP模型:

    osi七层模型
    应该层、表示层、会话层、传输层、网络层、数据链路层、物理层
    TCP/IP 四/五层模型将osi的前三层合并为一层应用层,传输层和网络层不变,物理层和数据链路层合并为网络接口层。
    在这里插入图片描述

    TCP/IP模型中每一层的功能和所支持协议如下图:
    (图源自https://zhuanlan.zhihu.com/p/42224106)
    在这里插入图片描述
    应用层:
    向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。

    传输层:
    提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。

    网络层 :
    负责相邻计算机之间的通信。其功能包括三方面。
    (1)处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
    (2)处理输入数据报:首先检查其合法性,然后进行寻径–假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。
    (3)处理路径、流控、拥塞等问题。

    网络接口层:
    这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。

    HTTP 协议

    HTTP 超文本传输协议(英文: HyperText Transfer Protocol,缩写: HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTTP 是万维网数据通信的基础。 HTTP 的应用最为广泛,譬如大家经常会打开网页浏览器查询资料, 通过浏览器便可开启 HTTP 通信。HTTP 协议工作于客户端(用户) 、 服务器端(网站) 模式下, 浏览器作为 HTTP 客户端通过 URL 向HTTP 服务端即 WEB 服务器发送请求。 Web 服务器根据接收到的请求后,向客户端发送响应信息。借助这种浏览器和服务器之间的 HTTP 通信,我们能够足不出户地获取网络中的各种信息。

    FTP协议

    FTP 协议的英文全称为 File Transfer Protocol, 简称为 FTP, 它是一种文件传输协议, 从一个主机向一个主机传输文件的协议。 FTP 协议同样也是基于客户端-服务器模式, 在客户端和服务器之间进行文件传输,譬如我们通常会使用 FTP 协议在两台主机之间进行文件传输,譬如一台 Ubuntu 系统主机和一台 Windows系统主机, 将一台主机作为 FTP 服务器、另一台主机作为 FTP 客户端,建立 FTP 连接之后,客户端可以从服务器下载文件,同样也可以将文件上传至服务器。
    FTP 除了基本的文件上传/下载功能外,还有目录操作、权限设置、身份验证等机制,许多网盘的文件
    传输功能都是基于 FTP 实现的。

    TCP协议

    TCP报文格式

    在这里插入图片描述

    • 16位源端口号:16位的源端口中包含初始化通信的端口。源端口和源IP地址的作用是标识报文的返回地址。

    • 16位目的端口号:16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。

    • 32位序号:32位的序列号由接收端计算机使用,重新分段的报文成最初形式。当SYN出现,序列码实际上是初始序列码(Initial Sequence Number,ISN),而第一个数据字节是ISN+1。这个序列号(序列码)可用来补偿传输中的不一致。

    • 32位确认序号:32位的序列号由接收端计算机使用,重组分段的报文成最初形式。如果设置了ACK控制位,这个值表示一个准备接收的包的序列码。

    • 4位首部长度:4位包括TCP头大小,指示何处数据开始。

    • 保留(6位):6位值域,这些位必须是0。为了将来定义新的用途而保留。

    • 标志:6位标志域。表示为:紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN。

      • URG:紧急标志。紧急标志为"1"表明该位有效。
      • ACK:确认标志。表明确认编号栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。
      • PSH:推标志。该标志置位时,接收端不将该数据进行队列处理,而是尽可能快地将数据转由应用处理。在处理Telnet或rlogin等交互模式的连接时,该标志总是置位的。
      • RST:复位标志。用于复位相应的TCP连接。
      • SYN:同步标志。表明同步序列编号栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。
    • 16位窗口大小:用来表示想收到的每个TCP数据段的大小。TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16字节字段,因而窗口大小最大为65535字节。

    • 16位校验和:16位TCP头。源机器基于数据内容计算一个数值,收信息机要与源机器数值 结果完全一样,从而证明数据的有效性。检验和覆盖了整个的TCP报文段:这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证的。

    • 16位紧急指针:指向后面是优先数据的字节,在URG标志设置了时才有效。如果URG标志没有被设置,紧急域作为填充。加快处理标示为紧急的数据段。

    • 选项:长度不定,但长度必须为1个字节。如果没有选项就表示这个1字节的域等于0。

    • 数据:该TCP协议包负载的数据。

    TCP三次握手

    tcp三次握手是指建立TCP连接,在建立TCP连接时,需要客户端发送三个包以确认建立连接,整个过程如下:

    在这里插入图片描述

    • 第一次握手:首先客户端将标志位SYN置1,随机产生一个值seq=J,并将该数据数据包发送给服务端,此时客户端进入SYN_SENT状态,等待服务端确认。
    • 第二次握手:当服务端收到数据包后,检测到SYN=1,知道客户端发送了连接请求,服务端将SYN和ACK置1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端确认连接请求,服务端进入SYN_RCVD状态。
    • 第三次握手:当客户端收到来自服务端的数据包时,检查ACK?=1,如果正确则将ACK=1,ack=K+1 返回给服务端,服务端检查ack?=K+1,ACK?=1,如果正确则建立连接成功,服务端和客户端都进入ESTABLISHED状态。

    TIPS:小写的 ack 代表的是头部的确认号 Acknowledge number, ack。大写的 ACK,则是 TCP 首部的标志位,用于标志的 TCP 包是否对上一个包进行了确认操作,如果确认了,则把 ACK 标志位设置成 1。

    TCP四次挥手

    TCP的四次挥手只值终止TCP连接,即在断开一个TCP连接时,需要客户端和服务端总共发送四个包以确认断开连接。在 socket 编程中,这一过程由客户端或服务端任一方执行 close 来触发。
    由于 TCP 连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送
    任务后,发送一个 FIN 来终止这一方向的连接,收到一个 FIN 只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个 TCP 连接上仍然能够发送数据,直到这一方向也发送了 FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
    在这里插入图片描述
    挥手请求可以是 Client 端,也可以是 Server 端发起的,我们假设是 Client 端发起:

    • 第一次挥手:Client 端发起挥手请求,向 Server 端发出一个 FIN 报文段主动进行关闭连接, 此时报文段的 FIN 标志位被设置为 1。 此时, Client 端进入 FIN_WAIT_1 状态,这表示 Client 端没有数据要发送给 Server 端了。
    • 第二次挥手:Server 端收到了 Client 端发送的 FIN 报文段,向 Client 端返回一个 ACK 报文段, 此时报文段的 ACK标志位被设置为 1。 ack 设为 seq 加 1, Client 端进入 FIN_WAIT_2 状态, Server 端告诉 Client 端,我确认并同意你的关闭请求。
    • 第三次挥手:Server 端向 Client 端发送一个 FIN 报文段请求关闭连接, 此时报文段的 FIN 标志位被设置为 1, 同时Client 端进入 LAST_ACK 状态。
    • 第四次挥手:客户端收到FIN后,考虑到网络不稳定的原因,发送一个ACK给服务端确认,进入TIME_WAIT状态,如果服务端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。

    == Q&A ==:
    Q:为什么建立连接是三次握手,而关闭连接却是四次挥手呢?
    A:这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

    Q:为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
    A:
    一、保证TCP协议的全双工连接能够可靠关闭
    二、保证这次连接的重复数据段从网络中消失

    先说第一点,如果Client直接CLOSED了,那么由于IP协议的不可靠性或者是其它网络原因,导致Server没有收到Client最后回复的ACK。那么Server就会在超时之后继续发送FIN,此时由于Client已经CLOSED了,就找不到与重发的FIN对应的连接,最后Server就会收到RST而不是ACK,Server就会以为是连接错误把问题报告给高层。这样的情况虽然不会造成数据丢失,但是却导致TCP协议不符合可靠连接的要求。所以,Client不是直接进入CLOSED,而是要保持TIME_WAIT,当再次收到FIN的时候,能够保证对方收到ACK,最后正确的关闭连接。

    再说第二点,如果Client直接CLOSED,然后又再向Server发起一个新连接,我们不能保证这个新连接与刚关闭的连接的端口号是不同的。也就是说有可能新连接和老连接的端口号是相同的。一般来说不会发生什么问题,但是还是有特殊情况出现:假设新连接和已经关闭的老连接端口号是一样的,如果前一次连接的某些数据仍然滞留在网络中,这些延迟数据在建立新连接之后才到达Server,由于新连接和老连接的端口号是一样的,又因为TCP协议判断不同连接的依据是socket pair,于是,TCP协议就认为那个延迟的数据是属于新连接的,这样就和真正的新连接的数据包发生混淆了。所以TCP连接还要在TIME_WAIT状态等待2倍MSL,这样可以保证本次连接的所有数据都从网络中消失。

    UDP 协议

    UDP 是 User Datagram Protocol 的简称,中文名是用户数据报协议,是一种无连接、不可靠的协议, 同样它也是工作在传输层。 它只是简单地实现从一端主机到另一端主机的数据传输功能,这些数据通过 IP 层发送,在网络中传输,到达目标主机的顺序是无法预知的,因此需要应用程序对这些数据进行排序处理, 这就带来了很大的不方便,此外, UDP 协议更没有流量控制、拥塞控制等功能,在发送的一端, UDP 只是把上层应用的数据封装到 UDP 报文中,在差错检测方面,仅仅是对数据进行了简单的校验,然后将其封装到 IP 数据报中发送出去。而在接收端,无论是否收到数据,它都不会产生一个应答发送给源主机,并且如果接收到数据发送校验错误,那么接收端就会丢弃该UDP 报文, 也不会告诉源主机,这样子传输的数据是无法保障其准确性的,如果想要其准确性,那么就需要应用程序来保障了。
    UDP 协议的特点:
    ①、 无连接、 不可靠;
    ②、 尽可能提供交付数据服务,出现差错直接丢弃,无反馈;
    ③、 面向报文,发送方的 UDP 拿到上层数据直接添加个 UDP 首部,然后进行校验后就递交给 IP 层,而接收的一方在接收到 UDP 报文后简单进行校验,然后直接去除数据递交给上层应用;
    ④、速度快,因为 UDP 协议没有 TCP 协议的握手、确认、窗口、重传、拥塞控制等机制, UDP 是一个无状态的传输协议,所以它在传递数据时非常快,即使在网络拥塞的时候 UDP 也不会降低发送的数据。
    UDP 虽然有很多缺点, 但也有自己的优点,所以它也有很多的应用场合,因为在如今的网络环境下,
    UDP 协议传输出现错误的概率是很小的,并且它的实时性是非常好,常用于实时视频的传输,比如直播、网络电话等,因为即使是出现了数据丢失的情况,导致视频卡帧,这也不是什么大不了的事情, 所以, UDP协议还是会被应用与对传输速度有要求,并且可以容忍出现差错的数据传输中。

    展开全文
  • TCP/IP协议族可按层次划分为四层,从上层到底层为:应用层,传输层,网络层, 数据链路层。知道了TCP/IP协议是进行分层设计的,很多好奇心强的同学肯定会又疑惑,为什么要分层进行设计,为什么又是按照这四个层级...

    原文:https://blog.csdn.net/wzqnls/article/details/59668160

    TCP/IP协议族可按层次划分为四层,从上层到底层为:应用层,传输层,网络层, 数据链路层。知道了TCP/IP协议是进行分层设计的,很多好奇心强的同学肯定会又疑惑,为什么要分层进行设计,为什么又是按照这四个层级进行划分。

    假设整个协议都是一个整体,没有进行层次化的设计,那么如果协议需要进行调整的时候,那就需要对整个协议进行修改。但是,进行分层解耦之后,每一层的内容相对独立,互不影响。需要进行变更的时候就只需要针对某一层的协议内容进行做变动,不会影响到其他几层的内容。其实和开发过程中的模块封装解耦一样。

    有的同学会有疑问,网络模型不是七层的吗,这里怎么变成了四层。其实将这四层在再次细分划出去之后也就变成了七层模型。这篇文章主要是为了讲解一下tcp/ip协议族的四层设计思想,故不针对四层和七层模型做过多讲解。

    先看看tcp/ip协议族分层之后的总体设计:

    QQ截图20170302180202.png

    ISO七层模型设计:

     QQ截图20170302180721.pngQQ截图20170302180721.png

    两种设计的对应层数划分关系:

     QQ截图20170302181612.pngQQ截图20170302181612.png

    ok,回到主题上来。下面开始介绍四层模型每层的作用以及整体是如何实现通信的。
    先上通信的整体结构图:

     QQ截图20170302180234.pngQQ截图20170302180234.png

    我们先从应用层开始讲起:
    应用层决定这次通信的应用类型,比如说FTP、DNS、SMTP等等,同时HTTP协议也属于应用层的范围。通俗来讲,应用层决定这一次通信要干嘛。

    传输层:传输层提供两台计算机之间的数据传输,传输层中包含着两个很叼的协议,分别是TCP和UDP协议。面试中经常提及的三次握手,四次挥手就是TCP协议的部分内容

    网络层:网络层则是用来处理这些流动的数据包,也就是如果把相应的数据包路由到指定的地点,为通信时的网络传输选择传输路线

    数据链路层:数据链路层包含了软件与硬件的接口部分,以及各种网络设备的硬件,也就是整个网络通信过程中最底层的基础设施

    简单了解了每一层的作用之后,我们试着串起来,摸索一下一次整体的http请求到响应的过程。
    拿访问google做个例子

    0.访问google.com,按下回车。

    1.应用层准备好请求报文,通过DNS服务进行域名解析,得到google的ip地址,并将报文发到传输层。

    2.传输层收到报文后,会将请求的数据包进行拆分,打包,并对每个包裹打上tag。在请求报文的基础上,加上一层TCP的首部信息,然后发往网络层。

    3.到了网络层以后,IP协议就发挥了巨大的作用,IP协议中需要两个比较重要的信息,那就是ip地址和mac地址。ip已经在应用层通过dns解析出来了,那mac怎么办。。。真尴尬,然而这时ARP协议又冒了出来,它可以根据ip地址反向查询到目标主机的mac地址。好了,现在啥都有了,打包带走,把数据发到数据链路层。

    4.终于走到基础设施这里了,此时数据包就在一根根光纤中旋转跳跃的奔向目的地,当然,整个过程不一定是直达的,可能需要经过各种中转站,就跟坐火车转车一样的。

    5.请求到达服务器后,先从数据链路层往上走,并验证消去以太网首部信息,在网络层消去IP首部,在传输层消去TCP首部,就像剥洋葱一样一层一层去皮,最后剩下的就请求报文。在应用层对请求做出处理之后,需要对请求返回一个响应。而整个响应的传输过程就和请求一样,一层一层的封装,响应到达客户端时再一层一层的消去首部,最后呈现响应的结果。

     

    为什么要用到MAC地址 


      这是由组网方式决定的,如今比较流行的接入Internet的方式是把主机通过以太网组织在一起,然后再通过交换机和 Internet相连接。

    以太网采用介质访问控制(Medh Access Control,MAC)地址进行寻址,MAC地址被烧人每个以太网网卡(Network Interface Card,NIC)中。
    MAC地址也叫硬件地址,它采用48位(6字节)的十六进制格式。组织唯一标识符(OUI)是由IEEE分配给单位组织的,它包含24位(3字节)。各个单位组织依次被分配一个全局管理地址(24位,或3字节),对于厂家生产的每一块网卡来说,这个地址是唯一的(当然,这不能完全保证)。

     

     

    展开全文
  • TCP/IP协议族介绍

    2021-11-22 19:38:57
    所谓TCP/IP协议族,一般来说不仅仅指TCP/IP两种协议,而是指一系列网络协议:包括IP/ICMP、TCP/UDP、FTP/TELENT等利用IP通信时需要用到的协议; TCP/IP协议的标准化流程大致分为以下几个阶段:首先是互联网草案阶段...
  • HTTP学习之TCP/IP协议族内各协议及关系
  • 主题目录OIS七层参考模型应用层表示层会话层传输层网络层数据链路层物理层TCP/IP协议族应用层传输层网络层数据量链路层物理层数据封装与解封装过程数据封装过程数据解封过程四级标题五级标题六级标题 OIS七层参考...
  • 单选:TCP/IP协议族是理解计算机网络和因特网的关键。下图给出了现实生活中邮政系统的工作过程与网络基于TCP/IP协议进行信息传输的过程示意图,仔细理解该图,注意理解、区分与命名,回答问题。按图示,思考计算机...
  • TCP,IP协议族之数字签名与HTTPS详解 前言 因为HTTP协议本身存在明文传输,不能很好的验证通信方的身份和无法验证报文的完整性。HTTPS确切的说不是一种协议而是HTTP+SSL(TSL)的结合体。HTTP报文经过SSL层加密后...
  • TCP/IP 协议族 计算机与网络设备要相互通信,双方必须基于相同的方法。不同的硬件、操作系统之间的通信都需要一种规则,而这种规则就称为协议(protocol)。 协议内存在各种各样的内容,把互联网相关的协议集合起来...
  • OSI协议、TCP/IP协议族及数据的传输 一.OSI协议 1.分层思想 分层思想是指将复杂的流程分解为几个功能相对单一的子过程。 分层思想的优势在于:1.整个流程更加清晰,使复杂问题简单化;2。便于发现问题并针对性的解决...
  • 第一章 TCP/IP协议族

    千次阅读 2021-12-07 20:05:43
    第1章 TCP/IP协议族 1.1 TCP/IP协议族体系结构以及主要协议 TCP/IP协议是一个四层协议系统,自底向上分别是数据链路层、网络层、传输层和应用层。 1.1.1数据链路层 数据链路层实现了网卡接口的网络驱动程序,以处理...
  • ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。 TCP/IP分层模型的四个协议层分别完成以下的功能: 第一层:网络接口层 也就是物理层 包括...
  • CDN 原理,TCP/IP协议族

    2021-02-27 14:53:56
    CDN 原理,TCP/IP协议族CDN 原理分发服务系统负载均衡系统管理系统TCP / IP协议族应用层协议—文件传输服务(FTP)应用层协议—远程登录协议(Telnet)应用层协议—电子邮件协议(SMTP)传输层协议—TCP传输层协议—UDP...
  • OSI模型与TCP/IP协议族

    2021-07-28 09:35:16
    国际标准化组织ISO2.OSI七层参考模型TCP/IP协议族OSI模型与TCP/IP模型TCP/IP协议族的组成 分层思想        将复杂的过程分解为几个功能相对单一的子过程    &...
  • 原因:网络层中主要的协议为IP协议,但是IP协议是无连接协议,因此在产生数据报的源主机、转发数据报的路由器、处理数据报的目的主机之间没有任何通信联系,因此也无法获知传输线路上的流量和拥塞情况,所以网络层不...
  • 第1章 TCP/IP协议族 1.1 TCP/IP协议族体系结构以及主要协议 TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能,且通过若干协议来实现,上层协议使用下层...
  • TCP/IP 协议

    2021-04-10 16:41:34
    网络层协议 IP,ICMP,ARP,RARP2.1 IP(Internet Protocol)协议:IPv4头部结构IP层特点:无连接,不可靠,无序的2.2 ARP(Address Resolution Protocol,地址解析协议)2.3 RARP(Reverse Address Resolution ...
  • 计网-TCP/IP协议族

    2021-10-21 20:25:22
    TCP/IP协议族 应用层 应用层 表示层 会话层 传输层 传输层 网际层 网络层 网络接口层 数据链路层 物理层 熟记 POP3 :110端口,邮件收取 SMTP :25端口,邮件发送 FTP :20数据端口/21控制端口,文件...
  • tcp/ip协议族

    2021-08-24 08:40:20
    文章目录TCP注册端口号大全【7】 TCP注册端口号大全【7】 TCP注册端口号大全

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,827
精华内容 21,530
关键字:

ip协议族

友情链接: CDMA_DECODING.zip