• [na]tcp&udp层各协议小结


    TCP和UDP

    传输层功能:
        可靠性:序列号、确认号&flag位
        有效性:win滑动窗口
    
    这篇目录索引:
        Tcp可靠性
        Tcp流控
        Tcp拥塞控制
        Tcp运输连接管理
    

    TCP的可靠性和流控

    为何需要可靠传输?

    一个网页可能很大,一个数据包传不过来,就需要分段传输。

    网络可能拥塞,某段可能丢失。那必须有人监管,tcp就能发现是否丢包。如果丢了一段,所有包就必须重传。

    可靠性:Tcp传输数据前,先建立会话,且维持回话,直到数据传输完成。实现可靠传输。

    考虑2个问题: 1,数据包为何最大65535个字节?  2,何为分片?

    TCP的流控

    如果web服务器发的很快,客户pc接收不过来,客户端就告诉服务器慢点发。

    总结:

      TCP发的数据太大,需要分段传输。如FTP,SMTP,QQ传文件。

      UDP一个数据包就能完成数据通信。不需要分段,不需要建立会话,不需要流控。不可靠传输。如DNS,QQ聊天信息。例如: 屏幕广播,多播,广播。

    TCP会话(查木马+状态)

    netstat –n  #显tcp会话连接状态
    netstat –nb #显示进程名

    端口号-传输层和应用层之间的关系

    共享文件夹: tcp+445
    http:       https
    smtp:      tcp25
    pop3:       tcp110
    telnet:    tcp23
    ftp:       tcp21
    sqlserver: tcp1433
    dns:       udp53
    RDP:       tcp3389
    

    查看windows常见服务

    netstat –a  #查看所有会话
    netstat –an #端口显示域名解析
    

    文件共享(内置)

    RDP协议

    安装dns、web服务

    启动服务,才会侦听端口。

    邮件服务的安装:

    新建域

    客户端配置:

    测试收发:

    网站和smtp都可以改默认端口

    需要重启服务

    客户端修改:

    修改远程桌面端口

    Mstsc

    在windows网卡上只开必要的端口:

    2003用tcp/ip筛选控制端口

    远程桌面写回环地址127.0.0.1不过tcpip筛选,可通

    网络层和传输层区别

    UDP

    UDP是无连接的,即发送数据之前不需要建立连接
    Udp使用最大努力交付,即不保证可靠传输。同是也不需要流量控制。
    Udp是面向报文的。Udp没有拥塞控制,很适合多谜题通信的要求。
    Udp支持一对一,一对多,多对一、多对多的交互通信。Tcp只支持一对一。
    Udp首部开销小,只有8个字节.

    ,长度:udp首部+数据

    ,校验和

    伪首部是用以来计算校验和的。伪首部byte+8byte udp=20个字节。

    伪首部用到了网络层的一些东西。

    TCP

    前言:网络可能拥塞,不稳定等,如何让文件可靠的、一字不落的传给对端。需要一个可靠的协议。

    TCP提供可靠的交付的服务
    TCP提供全双工通信
    面向字节流

    TCP实现可靠传输

    停止等待协议 VS 超时重传机制

    总结:只要你没告诉我收到了,我就要重传。

    特点:信道利用率太低。

    信道利用率

    RTT值。

    提高效率

    流量控制

    收到确认后才能清除发送缓存中的数据。

    累积确认:

    如图,把3号数据包丢了。那B即使收到4号也没用,A收到了2的确认,2以后的所有数据将重传。

    实现流量控制

    避免网络拥塞

    TCP数据包格式

    选项:有些tcp包不是传数据的,是用来商量一些事。

    序列号:本数据段的第一个字节,是所有数据的第几个字节。

    确认号:

    确认号=发送方序列号+1

    数据偏移:告知数据包,第多少字节开始就是tcp数据部分了。

    1111 四个bit。一个1代表4byte。最长15*4=60byte

    Xp是索取者

    标志位:

    SYN ACL FIN

    URG:优先传送。譬如给对端传文件,想中断,crtl+c,这个命令需要紧急传送过去。

    PSH:传到对方接受缓存时,需要优先交给app程序处理。

    RSTtcp连接收到了严重破坏,必须重新建立才能继续传输数据。

    SYN攻击工具:syn攻击器:伪造源ip,给对端发syn包。让对端和这些伪造的ip建立连接,让对端处于syn_wait状态。

    Land:发syn包(源ip和目的ip都是对端ip地址让对端自己和自己玩。)。将land放在windows目录下。然后:(可能会有病毒,vm里做)

    文件共享。

    窗口的作用

    告诉对端两件事,1我的接收缓存 2,我支持的最大mss

    校验和:

    TCP首部+数据部分。

    紧急指针:

    指明了紧急数据的尾部,如50,代表1-50部分需要紧急处理。

    选项:

    通知对方我能够接受最大的MSS

    我是否支持SACK 选择性确认。

        

    详解滑动窗口

    首次传送数据需要设定自己的发送窗口大小。以字节为单位。

    A如果为20,那窗口中的数据就可以往外发。到了20,还没收到确认,就不能发了。

    在未收到确认前,窗口中的数据不允许清除。

    发送的数据快逐渐增大。

  • 相关阅读:
    每日总结3.8
    Go中定时器实现原理及源码解析
    Go语言实现布谷鸟过滤器
    详解Go语言调度循环源码实现
    Go语言中时间轮的实现
    详解Go语言I/O多路复用netpoller模型
    详解Go中内存分配源码实现
    Go中由WaitGroup引发对内存对齐思考
    【分享】java精品实战教程
    nginx实战教程
  • 原文地址:https://www.cnblogs.com/iiiiher/p/5294416.html
Copyright © 2020-2023  润新知