精华内容
下载资源
问答
  • TCP/IP协议分析(传输层安全缺陷)

    千次阅读 2020-01-12 00:50:03
    传输层向其上的应用层提供通信服务,属于通信部分的最高层,同时也是用户功能中的最低层。只有位于网络边缘的主机才有传输层网络核心部分的路由器只用到下三层的功能。 传输层为应用进程之间提供端到端的逻辑通信...

    一、传输层及其协议

    传输层向其上的应用层提供通信服务,属于通信部分的最高层,同时也是用户功能中的最低层。只有位于网络边缘的主机才有传输层,网络核心部分的路由器只用到下三层的功能。
    传输层在通信中的作用
    传输层为应用进程之间提供端到端的逻辑通信(网络层为主机之间提供逻辑通信)。
    传输层需要对收到的报文进行差错检测。
    运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。
    传输控制协议(Transmission Control Protocol,TCP)
    TCP是一种面向连接(连接导向)的、可靠的、基于IP的传输层协议。TCP的可靠性和流控制服务能够确保数据不丢失和不会遭受破坏。

    用户数据报协议(User Datagram Protocol,UDP)
    UDP 是一种无连接的传输层协议,提供面向事务的简单、不可靠的信息传送服务。

    二、TCP协议的安全缺陷

    1、TCP数据段格式

    TCP是工作在传输层的主要协议之一,是有连接的传输协议。
    和IP协议不同,TCP是面向进程的协议,面临更加复杂多变的安全环境。
    在这里插入图片描述
    在这里插入图片描述
    每一条TCP连接分别连接客户端和服务器端的两个进程。端口可以理解成为是TCP连接于应用程序进程之间的连接界面。
    端口的分配并没有严格的规定,一般分为三类:
    熟知端口(Well Known Ports): 0~1023,公认这些端口绑定哪些服务。例如:80端口实际上表明了使用HTTP协议。
    登记端口号(Registered Ports):1024~49151,为没有熟知端口号的应用程序使用,必须在 IANA (The Internet Assigned Numbers Authority,互联网数字分配机构)登记,防止重复。
    动态端口(Dynamic Ports):49152-65535,用户应用程序临时使用。

    序列号:4字节。TCP连接中传送的每一个字节都会占用一个序列号。序列号字段的值指的是本报文段所发送的数据的第一个字节的序列号。

    确认号:4字节,期望收到对方的下一个报文段数据的第一个字节的序列号。 通常:收到的上一个数据包中的序列号+该数据包中数据的字节数。
    数据偏移(也称首部长度):4位,表明了TCP 报文的数据起始处距离 TCP 报文段的起始处有多远。计量单位是 32 位字(以 4 字节为计算单位)。
    保留:6位,未使用,全为0。

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    2、TCP连接的建立和释放过程

    在这里插入图片描述
    TCP连接释放

    3、TCP协议的安全缺陷

    TCP协议规定了通信双方必须事先建立连接,并且通过规定序列号的方式确保数据传输的有效性和有序性。
    建立了多个状态,以描述处于不同阶段的TCP过程。
    设置了多个定时器,以配合状态之间的转移,如:
    连接定时器、FIN-WAIT-2定时器、TIME-WAIT定时器、维持连接定时器等。一旦超过这些定时器设置的时间,通常就会放弃对应的连接,并释放资源。
    TCP状态转移图然而,这些看起来很美很严密的规则都需要消耗相应的系统资源加以维持,并且这些严密的规则只是对正常TCP行为进行规范。
    对应那些根本就不可能遵守规范的攻击者来说,这些严密规范就成为他们可以钻的空子。也就是说,如果不遵守规范,系统将会发生什么?也许就会发生一些攻击者们希望看到的情况发生。

    4、TCP SYN泛洪攻击

    TCP SYN泛洪(TCP SYN Flood)攻击是一种不遵守TCP协议规定的三次握手而出现的攻击行为,其目的是旨在造成攻击目标的瘫痪,无法响应正常的TCP连接请求,即所谓的拒绝服务攻击。
    TCP SYN泛洪攻击原理
    在TCP连接时,首先进行的是三次握手操作。如果发起连接请求的主机(客户端)在发出第一个连接请求的SYN包后突然掉线或者宕机,则被请求端(服务器端)在发出响应这个请求的SYN/ACK包后会因为得不到确认包而处于等待状态,称为半连接握手。
    在服务器端,通常有一个专门用于处理这种半连接的缓存(堆栈),所有未完成握手的连接会在缓存中排队,服务器端会不断重新尝试着发出SYN/ACK包,只有在等待一段时间后仍然得不到客户端的确认包,服务器才关闭这个连接。
    如果在短时间内大量出现这样的半连接握手,服务器就会忙于应付而无法响应正常的SYN请求,当这种半连接足够多时,服务器会因为堆栈溢出而崩溃。
    TCP SYN泛洪过程
    从上述原理可以看出,实现TCP序列号泛洪的关键是能够发出足够多的半连接请求。

    1.构造足够的IP地址。构造IP地址的目的一是为了防止被追踪,一是为了避开被攻击主机的IP地址过滤。
    2.在攻击主机上设置过滤规则,丢弃一切来自被攻击主机的SYN/ACK包。

    如果攻击主机有足够强大的性能和足够的带宽,并且被攻击主机没有对发出请求包的IP地址进行过滤,那么在理论上就可以仅依靠一台攻击主机瘫痪被攻击主机。
    为了达到攻击的目的,攻击主机通常会寻找许多在线的主机,通过植入木马的方式,使这些主机成为攻击主机的“僵尸”,也称为“肉鸡”,并且让这些僵尸主机同时发起攻击。

    TCP SYN泛洪防范
    1.缩短等待时间:当发现有大量半连接时,将等待时间缩短,减少保持半连接的时间。
    2.设置SYN Cookie:当收到SYN请求时,服务器按照源IP地址、源端囗、目的IP地址和目的端囗以及其他一些安全数值等要素进行hash运算并加密,称之为cookie。服务器不再为每个请求开辟缓存空间保持半连接。当收到来自客户端的ACK回复时再次计算cookie值并和原来的cookie值进行比较,若一致则完成连接,若不一致则丢弃。这样可以极大地减少由于堆栈溢出而使服务器崩溃的可能性。
    3.设置SYN防火墙:由防火墙回应SYN请求,只有得到客户端的ACK后,再转交服务器进行连接。
    TCP SYN泛洪仍然是一个难以防范的攻击,设置SYN cookie虽然避免了半连接,但也带来了ACK泛洪的可能性,也会因为增加了计算时间而导致响应时间延迟,同时也会导致许多TCP特性丢失,特别是在IPv6网络中。设置SYN防火墙只是保证了服务器不崩溃,而防火墙依然可能会崩溃。
    5、LAND攻击
    LAND攻击也是一种利用TCP三次握手机制的不完善,通过简单的将目标IP地址、源IP地址设置为攻击对象主机的IP地址,源端口和目的端口设置为攻击对象主机开放的同一个端口,即可非常有效地使目标机器重新启动或者死机。
    TCP LAND攻击原理
    TCP传输的可靠性依赖于三次握手所实现的事先连接和收发双方不断的相互确认。如果在规定时间内没有收到确认数据包,那么原先传输的数据包为被重新传输。
    如果攻击者通过某种方法使得目标主机无法收到通信对方的确认数据包,那么目标主机会一直不断重新发出数据包,并一直等待,直到资源耗尽而崩溃。
    TCP LAND攻击过程
    攻击者向目标主机发出一个目标地址和源地址都是目标主机的IP地址,并且源端口和目的端口都是目标主机某个开放的端口的TCP同步报文。
    假设攻击者主机的TCP序列号为x。
    目标主机在收到攻击主机的同步报文后,会向自己发送一个确认号为x+1,序列号为自身按照某种规律产生(假设为y)的同步确认报文。
    目标主机很快就收到自己发来的同步确认报文。然而,由于y不是目标主机希望的x+1,因此会发出一个确认报文,并建立和保持一个空连接,等待序列号为x+1的报文。
    至此,目标主机陷入死循环。不同的操作系统在受到Land攻击时的反应有所不同。如果是Unix或类Unix,大部分会崩溃;如果是Windows系统则会变得极其缓慢。这是因为TCP是有着很高优先级的内核进程,大部分进程会因为系统要处理TCP进程而不得不中断并交出资源。
    当资源耗尽,系统就会崩溃。
    TCP LAND攻击防范
    防御的方法也是非常简单,只要在防火墙上禁止那些来自于外网且源地址又是内网的数据包,特别是目标地址和源地址完全相同的数据包。
    6、TCP序列号欺骗
    无论是IP欺骗还是TCP会话劫持,都离不正确的TCP序列号的获得。TCP序列号欺骗(TCP Sequence Number Spoofing)的目的就是为了通过某种手段猜测可能的TCP序列号。
    每个操作系统在实现TCP时,采用的算法不尽相同,初始序列号的产生方法更是千差万别。
    TCP初始序列号产生原理
    虽然准确猜测主机B的初始序列号是困难的(因为每种操作系统在具体实现TCP/IP时会采用不同的算法),但是可以获得其变化规律。
    初始序列号取值范围:0232-1,也就是04294967295。具体取值算法与不同的系统相关,TCP/IP标准规定每4微秒加1,即每秒增加250000,计数满232-1归0。
    在早期的Free BSD等操作系统中,ISN按照每秒增加128000,若有连接时增加64000;在Windows系统中,ISN的增加等于两次连接之间时间差的毫秒数。
    在这里插入图片描述其中,ISNn是下一个ISN值, ISNc是当前的ISN值,RTT(Round Trip Time)是指两台主机之间数据包的往返时间,简单的可以用Ping命令获得。
    TCP序列号欺骗原理
    TCP序列号欺骗是指攻击者在冒充第三方被信任主机时,需要获得目标主机与被信任主机之间建立TCP连接时采用的序列号,也称为TCP会话劫持。
    由于初始序列号产生的随机性和较高的变化频率,使得攻击者通过截获A和B之间的报文获得序列号非常困难。因此,攻击者采用参与连接建立过程,通过冒充主机A与主机B建立连接,这样初始序列号就由攻击者所掌握,从而可以随心所欲的获得来自主机B的数据。
    在这里插入图片描述TCP序列号欺骗过程
    攻击主机X向主机B发起正常的TCP连接,并接收来自主机B的确认包,记录下确认包的序列号,假设为ISNb#。
    攻击主机冒充主机A向主机B发起TCP连接。其中,序列号为ISNx,源IP地址为A。
    主机B会向主机A发送确认包,这个确认包攻击主机是收不到的。其中包括了主机B的序列号ISNbISNb。 攻击者计算ISNb,并将ISNb$作为确认号向主机B发送确认包,连接即成功建立。
    在这里插入图片描述为了防止被冒充主机A收到来自主机B的确认包,通常还需要向主机A进行DOS攻击,或者选择没有上线的主机作为被冒充对象。
    TCP序列号欺骗防范
    1.在边界路由器上配置丢弃所有来自外网又声称自己是内部主机的数据包
    2.改进ISN生成算法,增加计算ISN的难度,比如通过(真)随机增量等方法。

    三、UDP协议的安全缺陷

    1、UDP数据段格式
    在这里插入图片描述2、UDP协议的特点
    在这里插入图片描述3、Fraggle攻击
    Fraggle攻击是Smurf攻击的简单改进,原理完全一样,利用对广播数据的应答而实现攻击。因为采用的是UDP协议,故而可以攻击那些屏蔽ICMP应请求包的防火墙。
    Fraggle攻击原理
    在很多操作系统中,为了方便测试而开放了7号端口(echo)和19号端口( chargen )。7号端口会将收到的字符一字不差的送回去,如果其中遇到回车符号,则会双倍返还。
    攻击者首先构造一个目标端口号为7的UDP包,将其封装在一个源地址为目标主机、目标地址是目标主机所在网络的广播地址的IP包内并将其发出。目标网络路由器接收到这样的广播包后会向网络中的所有主机都转发这个数据包,因为目标端口是7号端口,因此所有收到广播报文的主机都会向目标主机发出回送报文,只要目标网络内主机数量足够多,就可以很快淹没目标主机,从而达到攻击的目的。
    有趣的攻击行为
    根据协议规定,19号端口产生的随机字符数量在1-512字节之间。然而,不同操作系统在实现是并没有严格遵守。
    如果将目标端口和源端口分别设置为7号和19号,目标地址和源地址都是目标主机,则目标主机在收到这样的报文就会自己开始攻击。
    如果将源地址设为目标主机地址,源端口设为19号,目标地址设为目标主机所在网络的广播地址,目标端口7号。当目标网络路由器在收到这个报文后会向网络内的所有主机发送报文,由于目标端口为7,源端口号19,所有就会有巨量的垃圾流量发送到目标主机。
    防范
    1.关闭7号和19号端口。
    2.防火墙上设置策略,禁止那些源地址为内网实质是从外网进入的数据包。

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    展开全文
  • TCP协议概述TCP是面向连接的,面向字节流的传输层协议,每一条连接只能两个端点,是点对点的。它能提供可靠的传输服务,属于全双工通信。一个TCP报文段的首部格式如下: 首部各字段的意义: 1>源端口和目的...

    TCP协议概述


    TCP是面向连接的,面向字节流的传输层协议,每一条连接只能有两个端点,是点对点的。它能提供可靠的传输服务,属于全双工通信。一个TCP报文段的首部格式如下:
    这里写图片描述
    首部各字段的意义:
    1>源端口和目的端口:通讯的双⽅由IP地址和端口号标识。
    2>序号:在一个TCP连接中传送的字节流的每一个字节都需要按顺序编号,若当前序号为120,携带数据100字节,那么下一个报文段就必须从220开始。
    3>确认序号:期望收到对方下一个报文的序号,如果是221,说明到序号为200的数据都正确收到了。
    4>数据偏移:其实就是首部长度。在交付给上层时需要去除首部,就必须知道首部的长度。
    5>保留:保留给今后使用。
    6>紧急URG:值为1时,紧急指针有效,数据不再排队传送。直接插入到本报文段数据的最前面,但是紧急数据后面的数据仍是普通数据。
    7>确认ACK:ACK=1时,确认序号字段有效。为0时无效,说明该段报文只是单纯的传输,并不会捎带确认。
    8>推送PSH:PSH=1时,将这个报文及缓存区之间缓存尚未交付的数据一并交付给进程。
    9>复位RST:RST=1时,TCP连接出现严重错误需要重新连接或者拒绝一个非法的报文段。
    10>同步SYN:SYN=1时说明这是一条请求连接或者接受连接的报文。
    11>终止FIN:FIN=1时,说明这是一条请求释放连接的报文。
    12>窗口:窗口是用来告诉对端,当前自身的接收能力是多大。
    13>检验和:用来检测数据正确性。检验的范围包括首部和数据两部分。
    14>紧急指针:和URG配合使用。指出紧急数据的字节数。
    15>选项:可变长
    TCP属于IP的上层协议,所以,它封装在IP的数据部分。

    字段URG和PSH都是用来标识紧急数据的,它们有什么区别呢?
    1、URG紧急位
    URG=1,该tcp报文为紧急报文;其中的紧急数据需要直接交付给接收端的进程,而不进入缓存。
    紧急数据的长度=紧急指针;
    紧急数据的起始点=序号;
    紧急数据的终止点=序号+紧急指针;
    (综上,紧急指针就是记录紧急数据的字节数,紧急指针永远为正数)
    1)在紧急数据后面的数据为普通数据,需要按序缓存。
    2)窗口为0也可以发送紧急数据。
    3)紧急数据都处理完成后,tcp就告诉进程恢复到正常操作。

    2、PSH推送位
    PSH=1,该报文希望,到达对端时,将这个报文及缓存区之间缓存尚未交付的数据一并交付给进程。
    1)PSH的数据=本报文数据+缓存区数据
    2)PSH的方向—>单方向(接收PSH报文的一端)

    3、区别
    URG交付给进程的数据:只有紧急数据
    PSH交付给进程的数据:缓冲区排好序的数据及当前报文中的数据


    TCP连接建立过程


    这里写图片描述
    连接建立过程时的状态基如上图,我们分析一下这个过程。
    1.起初,A,B都处于CLOSED(关闭)状态。
    2.主机A主动打开连接,服务器B被动打开连接。B创建TCB(维护连接的数据结构),进入LISTEN状态。
    3.A也需要创建TCB,然后向B发送请求连接报文,自己进入SYN-SEND(同步已发送状态)。
    4.B收到报文后向A发送确认,自己进入SYN-RCVD(同步收到)。
    5.A收到B的确认后,需要再向A给出确认,然后进入ESTAB-LISHED(已建立连接)。
    6.B收到A的确认后,也进入ESTAB-LISHED。

    那么,TCP连接为什么要三次握手呢
    考虑假如只有两次握手会出现的情况:
    A向B发送了一次连接请求,但是此报文在网络中滞留了很久(对于A来说已经失效),但是B收到后对报文进行了确认,但是A此时没有发送确认报文,所以不会理财B的确认。上面也提到过,服务器B会建立一套用来维护连接的数据结构TCB,那么这种情况下B认为连接已经建立,会一直等待A发送数据,浪费了资源。

    或者A恶意的攻击服务器B,疯狂的发送连接请求给B,如果只有两次握手,B确认后就认为连接建立了。最终会导致服务器瘫痪。

    所以两次肯定是不行的,那四次、五次、更多次呢?当然不会出现上述安全的问题,但是既然3次可以做到,那次数多了除了浪费时间也没啥好处,所以,TCP连接需要三次握手。


    TCP连接释放过程


    这里写图片描述
    连接释放过程(四次挥手)及双方状态改变如上图。
    数据传输结束后,双方都可以释放连接。
    1.A向B发送释放连接请求,并停止发送数据,主动关闭TCP连接。自己进入FIN-WAIT-1(终止等待1)状态。
    2.B收到后发送确认,进入CLOSE-WAIT(关闭等待)状态,此时TCP处于半关闭状态,因为,虽然A不会再给B发送数据了,但是B可能会有数据要发送给A。
    3.B一段时间后也没有数据要发送了,向A发送释放连接请求,发送后B进入LAST-ACK(最后确认)状态。
    4.A收到B的释放连接请求报文,必须再向B发送此报文的确认报文,然后A进入TIME-WAIT(时间等待)状态。等待2MSL后,A才能进入CLOSED状态。
    5.B在收到A的最后确认后,直接进入CLOSED状态。

    A在发送完最后一条报文后,为什么还要等待2MSL后才能进入CLOSED状态呢?
    第一,为了保证 A 发送的最后一个 ACK 报文段能够到达B。

    万一A的最后一个ACK报文段丢了,那么A在等待的时间里就可能再次收到B的释放连接请求,此时A就知道它发送的上一条报文丢了,它会重发。如果不等待,那当最后一条确认报文丢了之后,B就不会进入CLOSED状态。

    第二,防止 “已失效的连接请求报文段”出现在本连接中。A 在发送最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续产生的报文段都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。

    这里的2MSL叫做时间等待计时器,TCP中有四种计时器,我们来一个个认识一下。

    一、时间等待计时器
    时间等待计时器是在连接终止期间使用的 。当TCP关闭一个连接时,它并不认为这个连接马上就真正地关闭了。在时间等待期间中,连接还处于一种中间过渡状态。这个计时器的值通常设置为一个报文段的寿命期值的两倍 。
    二、保活计时器
    实际上,服务器每收到一个客户机的报文后都会重设保活计时器(2小时),因为客户机有可能在建立连接后由于某些原因出现故障,没来得及释放与服务器的连接,所以这个保活计时器就是为了避免服务器一直等下去。若超过这个计时器的时间服务器还没有收到客户机的数据,就会发送一个探测报文,以后每隔75分钟发送一次,若连续10个探测报文都没有得到客户机的响应,服务器则认为客户机故障,然后关闭连接。
    三、重传计时器
    当TCP发送报文段时,就创建该特定报文段的重传计时器 。可能发生两种情况:
    (1)、若在计时器截止时间到( 通常是60秒 )之前收到了对此特定报文段的确认,则撤销此计时器。
    (2)、若在收到了对此特定报文段的确认之前计时器截止期到,则重传此报文段,并将计时器复位。
    四、坚持计数器
    为了对付零窗口大小通知,TCP需要另一个计时器。假定接收TCP宣布了窗口大小为零。发送TCP就停止传送报文段,直到接收TCP发送确认并宣布一个非零的窗口大小。但这个确认可能会丢失。我们知道在TCP中,对确认是不需要发送确认的。若确认丢失了,接收TCP并不知道,而是会认为它已经完成任务了,并等待着发送TCP接着会发送更多的报文段。但发送TCP由于没有收到确认,就等待对方发送确认来通知窗口的大小。双方的TCP都在永远地等待着对方。
    要打开这种死锁,TCP为每一个连接使用一个坚持计时器。 当发送TCP收到一个窗口大小为零的确认时,就启动坚持计时器 。 当坚持计时器期限到时,发送TCP就发送一个探测报文段 。这个报文段只有一个字节的数据。它有一个序号,但它的序号永远不需要确认;甚至在计算对其他部分的数据的确认时该序号也被忽略。探测报文段提醒对端:确认已丢失,必须重传。
    坚持计时器的值设置为重传时间的数值。但是,若没有收到从接收端来的响应,则需发送另一个探测报文段,并将坚持计时器的值加倍和复位。发送端继续发送探测报文段,将坚持计时器设定的值加倍和复位,直到这个值增大到门限值( 通常是60秒 )为止。在这以后,发送端每隔60秒就发送一个探测报文段,直到窗口重新打开。

    展开全文
  • 第一章 概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第五章 传输层 5.1、传输层协议概述 ...TCP/IP 的传输层有两个不同的协议: (1) 用户数据报协议 UDP (User Datagram Prot...

    第一章 概述
    第二章 物理层
    第三章 数据链路层
    第四章 网络层
    第五章 传输层
    第六章 应用层

    第五章 传输层

    5.1、传输层协议概述

    运输层向它上面的应用层提供通信服务它属于面向通信部分的最高层,同时也是用户功能中的最低层

    为应用进程之间提供端到端的逻辑通信

    TCP/IP 的传输层有两个不同的协议:

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

    • TCP报文段

    • 不可靠

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

    • TCP报文用户数据报
    • 可靠
    • 不提供广播或多播服务

    三类端口

    • 熟知端口,数值一般为 0~1023。

    • 登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。

    • 客户端口号或短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

    5.2、用户数据报协议 UDP

    UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能

    特点:

    1. UDP 是无连接的,即发送数据之前不需要建立连接。

    2. UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。

    3. UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。

    4. UDP 支持一对一、一对多、多对一和多对多的交互通信。

    5. UDP 的首部开销小,只有 8 个字节

    5.3、传输控制协议 TCP

    数据帧格式

    • 确认 ACK —— 只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。
    • 紧急 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
    • 复位 RST (ReSeT) —— 当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
    • 同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。
    • 终止 FIN (FINis) —— 用来释放一个连接。FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

    特点

    1. TCP 是面向连接的运输层协议。

    2. 每一条 TCP 连接只能是点对点。

    3. TCP 提供可靠交付的服务。

    4. TCP 提供全双工通信。

    5. 面向字节流。

    注意:

    • 在发送完一个分组后,必须暂时保留已发送的分组的副本。

    • 分组和确认分组都必须进行编号。

    • 超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。

    通过ARQ(Automatic Repeat reQuest)协议实现自动重传

    TCP 连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口

    采用累积确认,即为确认当前分组的同时表明到这个分组为止的所有分组都已正确收到了

    如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次

    套接字 socket = (IP地址: 端口号)

    每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定

    5.4、TCP三次握手(重点)

    1. 发送连接请求和一些参数,申请开始连接

    2. 收到连接请求,发送自身一些参数

    3. 收到B服务器的连接确认之后,再次向B服务器发送确认请求,确认后才算连接建立成功

      为什么明明两次可以商量明白却还需要第三次

      一句话,主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误

    5.5、四次挥手

    为什么客户端最后还要等待2MSL?

    MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。

    第一,保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。

    第二,防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。

    为什么建立连接是三次握手,关闭连接确是四次挥手呢?

    建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。
    而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。

    展开全文
  • 传输层

    2019-10-02 11:59:24
    网络边缘部分的两台主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。( 路由器只需要寻找目的主机,只有数据交付至...

    计算机网络架构中传输层位置

    从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层

    当网络边缘部分的两台主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。( 路由器只需要寻找目的主机,只有数据交付至具体应用进程才涉及复用/分用,及端口的概念)

    传输层

    IP协议能够将IP数据报由源主机交付至目的主机,那么,**为什么还需要传输层呢?**这是因为,**从IP层来说,通信的两端是两个主机。**IP数据报的首部明确地标志了这两个主机的IP地址。但是“两个主机之间的通信”这种说法还不够清楚,这是因为,真正进行通信的实体是在主机中的进程,是这个主机的一个进程和另外一个主机中的一个进程在交换数据。因此,严格来讲,两个主机进行通信就是两个主机中的应用进程互相通信

    IP协议虽然将分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。从传输层的角度看,**通信的真正端点并不是主机而是主机中的进程。**也就是说,端到端的通信是应用进程之间的通信

    传输层为相互通信的应用进程提供逻辑通信,即所谓的“端“到”端“通信。并负责对收到的报文进行差错检验,消除网络间不可靠性,提供从源端主机到目的端主机的可靠的、与实际使用的网络无关的信息传输

    复用与分用的概念

    传输层有一个很重要的功能——复用(multiplexing)和分用(demultiplexing)。这里的复用是指发送方不同的应用进程都可以使用同一个传输层协议传送数据(需要加适当首部),而分用是指接收方的传输层在剥去报文的首部后,可以将这些数据正确交付目的应用进程

    例如,某用户在使用浏览器查找某网站的信息时,其主机的应用层运行浏览器客户进程。如果在浏览网页的同时,还要发送电子邮件给网站发送反馈意见,那么主机的应用层就还要运行电子邮件客户进程。如下图所示,主机A的应用进程AP1和B的应用进程AP3通信,此时,应用进程AP2也和对方的应用进程AP4通信

    生活中快递邮寄站点,不同小区不同人群,共用一个快递点,向外邮寄快递,是复用过程。快递员对来自电商网站,或其他渠道的快递包拆分,依照联系方式分发给不同的用户,是一个分用的过程

    逻辑通信的理解

    逻辑通信的意思是:从应用层来看,只要把应用层报文交给下面的传输层,传输层就可以把这报文传送到对方的传输层(哪怕有几千公里的距离),好像这种通信就是沿水平方向直接传送数据。但事实上这两个传输层之间并没有一条水平方向的物理连接。数据的传送石沿图中虚线方向,经过多个层次传递的。“逻辑通信“的意思是,好像这样通信,但事实并非是这样

    在网络各个层之间,是透明传输的(对其他层不可见),同样传输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、路由选择协议等),它使应用进程看见的就是好像在两个传输层实体之间有一条端到端的通信逻辑通信信道

    这条逻辑通信信道对上层的表现却因传输层使用的不同协议而有很大差别。当传输层采用面向连接的TCP协议时,这种逻辑通信信道就相当于一条全双工的可靠信道。当采用面向无连接的UDP协议时,这条逻辑通信信道仍然是一条不可靠信道

    传输层的两个主要协议TCP与UDP

    TCP/IP 的传输层有两个不同的协议:
    (1) 用户数据报协议 UDP (User Datagram Protocol)
    (2) 传输控制协议 TCP (Transmission Control Protocol)

    下图给出了这两种协议在协议栈中的位置

    UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认**。UDP 不提供可靠交付**

    TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,也占用许多的处理机资源

    (1)传输层的 UDP 用户数据报与网际层的IP数据报有很大区别。IP 数据报要经过互连网中许多路由器的存储转发,但 UDP用户数据报是在传输层的端到端抽象的逻辑信道中传送的。
    (2)、TCP报文段是在传输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的传输层是否建立了 TCP 连接

    总结

    传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。引入传输层,增加复用和分用的功能、 消除网络层的不可靠性、 提供从源端主机到目的端主机的可靠的、与实际使用的网络无关的信息传输

    展开全文
  • 属于面向通信部分的最高层,同时也是用户功能中的最低层 2.只有位于网络边缘部分的主机的协议栈才运输层,路由器在转发分组时只到网络层 3.传输层提供应用进程间的逻辑通信(网络层提供主机之间的逻辑通信) 4....
  • 计算机网络---传输层

    2019-09-30 01:00:09
    网络的边缘部分两台主机使用网络核心部分功能进行端到端通信时,只有主机的协议栈才有传输层和应用层,而路由器在转发分组时都只用到下三层功能(即 在通信子网没有传输层传输层只存在于通信子网以外...
  • 实际存在的协议主要包括在:物理层、数据链路层、网络层、传输层和应用层。各协议也分别对应这5个层次而已。要找出7个层次所对应协议,恐怕会话层和表示层的协议难找到啊。。 【1】物理层:主要定义物理设备标准...
  • 计算机网络--传输层

    2016-08-12 20:50:18
    网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才运输,而网络核心部分中的路由器在转发分组时都只用到下三的功能。 两个主机进行通信实际上...
  • 计算机网络-4传输层

    2018-03-27 22:05:42
     当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才运输,而网络核心部分中的路由器在转发分组时都只用到下三的功能。5-1-1.进程之间的通信两...
  • 传输协议的介绍

    2020-05-31 15:22:27
    传输层(Transport Layer)主要功能是实现网络中不同主机上用户进程之间数据通信。 网络层和数据链路层负责将数据送达目的端主机,而这个数据需要什么用户进程去处理,就需要传输层帮忙了。 传输层要决定对会话层...
  • TCP协议是TCP/IP体系一个非常复杂的协议,在4/5/7层网络模型中属于传输层的协议,主要以下几个特点: 1.面向连接:通信双方在传输数据之前必须通过三次握手建立连接,数据传输结束需要经过四次挥手来关闭连接...
  • [网络知识]TCP协议中的粘包与拆包

    千次阅读 2020-01-14 19:42:42
    我们都知道TCP属于传输层的协议传输层除了TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包现象呢?答案是不会。UDP是基于报文发送,从UDP帧结构可以看出,在UDP首部采用了16bit来指示UDP数据报文...
  • 网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才运输,而网络核心部分中的路由器在转发分组时都只用到下三的功能。 两个主机进行通信实际...
  • 目录1、传输层提供什么样的服务?2、传输层的协议数据单元(PDU)是什么?...在TCP和UDP不同协议中,又称为TCP报文段或UDP报文段。 3、传输层的协议哪些? TCP:传输控制协议,面向连接的传输服务 UDP
  • 网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时 ,只有主机的协议栈才运输,而网络核心部分中的路由器在转发分组时都只用到下三的功能。 下面通过示意图来说明运输的作用。设...
  • ARP和RARP属于层的协议

    万次阅读 2015-11-13 21:36:50
    在局域网网络中实际传输的是“帧”,帧里面是目标主机MAC地址。在以太网,一个主机要和另一个主机进行直接通信,必须要知道目标主机MAC地址。但这个目标MAC地址是如何获得呢?它就是通过地址解析...
  • 传输层 复习

    2020-06-04 00:53:58
    为什么需要运输层呢? 作用:从通信和信息处理角度看,传输层向它上面应用层提供通信服务,它属于面向通信部分最高层。**网络IP协议能把源主机...传输层有两个重要功能: 复用和分用 复用:在发送方不同
  • 初识传输层的TCP/UDP

    2016-07-20 10:43:00
    传输层是网络体系较为重要一层,而在传输层有两个非常重要的协议:TCP和UDP。  1....传输层有个很重用功能:即复用和分用;复用即指不同应用进程都可以通过同一个传输层协议传送数据...
  • 先说一下网络的层级:由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层 1、TCP和UDP TCP:是面向连接一种传输控制协议属于传输层协议。TCP连接之后,客户端和服务器可以互相发送...
  • 传输层的功能 ——传输层向上面应用层提供...——只有主机的协议栈才有传输层和应用层,而路由器在转发分组时都只用到下三层功能。(即在通讯子网没有传输层传输层只存在于通信子网以外主机。)
  • 当位于网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,只有主机的协议栈才运输,而网络核心部分中的路由器在转发分组时都只用到下三的功能。 虽然网络层实现了主机...
  • 网络协议的理解

    千次阅读 2015-10-12 22:07:10
    首先,我们大学时候读过OSI七层网络,包括物理层、数据链路层、网络层、传输层、会话层、...TCP协议则处于传输层,目的是确保这个包能一份不拉到达对方手。然后我们经常说HTTP协议、FTP协议等就是应用层东西
  • 运输层是向他上面的应用层提供通信服务,它属于面向通信的最高层,当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层传输层提供了进程间的逻辑通信,传输层向...
  • 传输层——TCP与UDP

    2020-05-08 14:10:07
    一、传输层的定义 当电脑进行网络通信时,光IP和MAC地址是不够,因为IP将信息发送到对方主机位置,但是并不知到由那个端口上应用程序来接受和处理信息,所以我们还需要知道对方应用程序端口号,这样...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 258
精华内容 103
关键字:

属于网络协议中的传输层有