zoukankan      html  css  js  c++  java
  • 计算机网络--->6. 传输层(1)

    1. OSI和DOD模型

    • 说明:RARP就是将ARP反过来

    2. 传输层的两个协议

    在TCP/IP协议栈,传输层有两个协议TCP和UDP。

    2.1 TCP:传输控制协议

    在客户端打开一个网页的时候,(1)服务器要将这个网页分成段,封装成多个数据包进行传输。(2)TCP协议要求客户端和服务器之间保持一个会话,用于统计发送了多少个数据包了,还有多少个没发,中途若有丢失的数据包客户端还要要求服务器重新传输,以保证可靠传输。知道数据传输完成,会话才会结束。(3)若服务器给客户端发送的数据过快,客户端来不及处理,客户端会告知服务器暂停一下,等客户端处理完成之后,服务器再继续发。

    TCP总结:

    • 将传输的文件分段
    • 客户端与服务器段建立会话保证可靠传输
    • 实现流量控制功能

    2.2 UDP:用户数据包协议

    (1)上网的时候一般都需要进行域名解析。当在计算机A中输入一个网址的时候,A就要向DNS服务器发一个请求,询问该网址的地址是多少(一个数据包就说明白这件事情),这个时候传输层就用UDP协议;DNS服务器收到数据包后告诉A该域名的ip地址是...,(一个数据包就可以回答A的问题),这也是用UDP协议;之后A通过收到的IP地址访问WEB站点。UDP是不可靠传输,当网络堵塞,数据包发生丢失,即A问了之后,DNS服务器没有回应,那么过1s后,A会再问一遍。A不需要和DNS服务器建立会话

    (2)QQ聊天的时候,发送的聊天信息也是一个数据包可以传完,也是不可靠传输,用的是UDP协议。一来一回聊了很多内容,发送了很多数据包,但是这些数据包之间是没有联系的,所以也不需要编号。有时候会出现一个红色!号表示发送失败,这时我们人为地就会再发一遍
    (3)两个人传一份500M的电影,这一个数据包是传不完的,这里用的是TCP协议。
    (4)发邮件用的是TCP协议(可能邮件很长还有附件)
    (5)利用ftp下载文件使用的是TCP协议,ftp上的文件有大有小
    (6)有时候使用多个数据包的通信也是UDP通信:eg:广播屏幕也是属于UDP协议。一个机房里的计算机都连着一个交换机,其中有一台老师的计算机上安装了一个广播软件,这个老师的计算机就在这个局域网中发广播,并不和其他的计算机建立会话,也不使用可靠的通信,若有一台学生电脑相应慢没有收到老师当前的屏幕,老师也不会去管,老师的计算机只管当前电脑屏幕是什么样子就在网上播什么。这样数据包广播或者多播的这里通信也用UDP协议。因为不建立会话,也不保证数据传输的可靠性。

    • 一个数据包就能完成数据通信,不需要分段
    • 客户端和服务器端不需要建立会话(降低了对服务器的性能要求)
    • 不需要流量控制(因为就一个数据包)
    • 进行不可靠传输(没收到就再传一遍)
    • 也会应用于多播和广播

    2.3 查看会话

    • netstat -n命令用于查看我电脑当前建立的会话,以下都是TCP协议,这里是看不到UDP协议的,因为UDP协议不建立会话
    C:UsersRuanc>netstat -n
    
    活动连接
    
      协议  本地地址          外部地址        状态
      TCP    127.0.0.1:49664        127.0.0.1:59699        ESTABLISHED
      TCP    127.0.0.1:54530        127.0.0.1:64231        ESTABLISHED
      TCP    127.0.0.1:59699        127.0.0.1:49664        ESTABLISHED
      TCP    127.0.0.1:64231        127.0.0.1:54530        ESTABLISHED
      TCP    127.0.0.1:64232        127.0.0.1:64233        ESTABLISHED
      TCP    127.0.0.1:64233        127.0.0.1:64232        ESTABLISHED
      TCP    192.168.43.231:63577   112.34.111.149:80      ESTABLISHED
      TCP    192.168.43.231:63593   40.119.211.203:443     ESTABLISHED
      TCP    192.168.43.231:63597   183.192.192.163:8080   ESTABLISHED
    
    • netstat -nb用来查看计算机建立会话的进程
      当发现可以的会话后,用这个命令可以直接找到建立这些会话的进程,知道这个进程的名称后,我们在自己的电脑上搜索,如果是木马就把它删掉。

    3. 传输层协议和应用层协议之间的关系

    如下图,黄底的是应用层协议,这里只是列出部分。TCP/UDP+端口:可以表示一个应用层协议,如此说来应用层协议非常多

    例如:

    • TCP协议+3389端口:代表远程桌面使用的一个协议,叫做RDP协议

    常见的传输层协议和应用层协议之间的关系

    • http = TCP+80端口
    • https = TCP+443端口(访问安全站点的时候用到就是https)
    • RDP=TCP+3389端口(使用远程桌面连服务器的时候用到就是远程桌面协议)
    • ftp = TCP+21端口
    • 访问共享文件夹 = TCP+445端口
    • SMTP = TCP+25端口(发邮件用的协议)
    • POP3 = TCP+110端口(收邮件)
    • telnet = TCP+23端口
    • SQL = TCP+1433端口
    • DNS = UDP+53端口(应用层的域名解析DNS协议,既可以用TCP的53端口,又可以用UDP的53端口,多数用于UDP的,所以可以认为DNS用的是UDP协议)

    4. 服务和应用层协议之间的关系

    服务:计算机安装服务之后,利用TCP/UDP的端口侦听客户端的请求。

    我们可以在计算机中安装很多服务。比如:

    • 安装web服务,那么计算机就是一个web站点了。

    • 安装邮件服务,那么就可以让客户端收发邮件了

    • 当计算机1安装了web服务,只有这个服务一启动,他就使用TCP协议的80端口来侦听客户端的请求。若安装FTP服务,那么该服务一启动,那就用TCP协议的21端口来侦听客户端的请求。安装SMTP发邮件服务,就使用TCP的25端口来侦听客户端的请求。

    • 举例:
      当计算机2要访问WEB站点,就要在网上发一个数据包,数据包在传输层包含信息:目标端口80(明确),源端口1234(随便);到网络层之后加上ip地址:目标ip101,源ip102。到达路由器后,路由器根据ip地址将数据包转发到计算机1的网卡,网卡发现数据包里用的是TCP协议且端口号是80,此时web站点已经启动,且80端口在侦听,那么就用web服务器负责接待,知道对方是来访问网页的,那么就将网页传回去。

    • 数据到达计算机1后,访问计算机1的哪个服务,是由目标端口决定的。若计算机上只是安装了web服务,但是没有启动,那么这个80端口是不侦听的,也不会搭理客户端的请求

    • web安装后必须是启动状态,才会侦听客户端的请求

    • 为了安全起见,还可以在计算机1的网卡上设置,什么样的数据包可以进来。若这个网卡只允许目标端口是80的数据可以进来,这样只允许访问网站的数据包可以进来,访问FTP的,SMTP等都进不来,就算在侦听也没有用。网络安全由此产生。

    计算机如何实现安全

    计算机上如果安装的服务比较多,若服务1有漏洞,通过服务1的漏洞可能会入侵操作系统,之后将其他服务损坏。如何让自己的服务器更安全呢?

    • 将没有用的服务停掉
    • 若害怕停下某个服务导致系统崩溃,那么可以在计算机的网卡上设置安全
    • 网络安全:计算机的网卡上只开发必要的端口
    总结服务和应用层协议之间的关系
    • 服务使用TCPUDP的端口侦听客户端请求
    • 客户端使用IP地址定位服务器
    • 客户端使用目标端口定位服务器中的某个服务
    • 可以在服务器网卡上设置必要的端口,实现服务器网络安全

    5. 网络安全(补充内容,不属于计算机网络的内容)

    5.1 如何在window上安装服务

    安装服务之后,启动,计算机就开始侦听对应的端口

    5.2 如何查看服务侦听的端口

    • 命令netstat -a或者netstat -an都可以查看服务侦听的端口
    C:UsersRuanc>netstat -an
    
    活动连接
    
      协议  本地地址          外部地址        状态
      TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
      TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
      TCP    0.0.0.0:5040           0.0.0.0:0              LISTENING
      TCP    0.0.0.0:5357           0.0.0.0:0              LISTENING
      TCP    0.0.0.0:6646           0.0.0.0:0              LISTENING
      TCP    0.0.0.0:7680           0.0.0.0:0              LISTENING
      TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING
      TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING
      TCP    0.0.0.0:49666          0.0.0.0:0              LISTENING
      TCP    0.0.0.0:49667          0.0.0.0:0              LISTENING
      TCP    0.0.0.0:49668          0.0.0.0:0              LISTENING
      TCP    0.0.0.0:49669          0.0.0.0:0              LISTENING
      TCP    0.0.0.0:49671          0.0.0.0:0              LISTENING
      TCP    127.0.0.1:7475         0.0.0.0:0              LISTENING
      TCP    127.0.0.1:10000        0.0.0.0:0              LISTENING
      TCP    127.0.0.1:49184        127.0.0.1:49664        ESTABLISHED
      TCP    127.0.0.1:49664        127.0.0.1:49184        ESTABLISHED
      TCP    127.0.0.1:51308        127.0.0.1:54530        ESTABLISHED
      TCP    127.0.0.1:51309        127.0.0.1:51310        ESTABLISHED
    
    • 本地地址那一列的冒号就表示本台计算机正在侦听的端口号,我的计算机侦听了445端口,445端口是访问共享资源用到的端口
    • ESTABLISHED表示已经建立会话
    • 说明
      TCP    192.168.43.231:51500   204.79.197.222:443     ESTABLISHED
    

    表面一个ip地址为204.79.197.222的计算机访问我的51500端口,数据包的源端口是443

    • 电信的DNS服务器222.222.222.222;谷歌公司的DNS服务器8.8.8.8

    • 查看建立的会话netstat -n

    C:UsersRuanc>netstat -n
    
    活动连接
    
      协议  本地地址          外部地址        状态
      TCP    127.0.0.1:49184        127.0.0.1:49664        ESTABLISHED
      TCP    127.0.0.1:49664        127.0.0.1:49184        ESTABLISHED
      TCP    127.0.0.1:51308        127.0.0.1:54530        ESTABLISHED
      TCP    127.0.0.1:51309        127.0.0.1:51310        ESTABLISHED
      TCP    127.0.0.1:51310        127.0.0.1:51309        ESTABLISHED
      TCP    127.0.0.1:54530        127.0.0.1:51308        ESTABLISHED
      TCP    192.168.43.231:49201   112.34.111.149:80      ESTABLISHED
      TCP    192.168.43.231:50682   40.119.211.203:443     ESTABLISHED
      TCP    192.168.43.231:50701   183.192.192.163:8080   ESTABLISHED
      TCP    192.168.43.231:50719   221.228.75.64:9203     ESTABLISHED
      TCP    192.168.43.231:50900   13.224.161.13:443      ESTABLISHED
      TCP    192.168.43.231:50944   112.34.111.108:443     CLOSE_WAIT
      TCP    192.168.43.231:51373   116.62.230.66:443      ESTABLISHED
      TCP    192.168.43.231:51385   112.34.111.108:443     CLOSE_WAIT
      TCP    192.168.43.231:51457   120.92.219.40:7823     ESTABLISHED
    
    • netstat -nb:查看建立会话的进程
    • telnet ip port : 查看某一个机器上的某一个端口是否可以访问,如:telnet 114.80.67.193 8080。黑客在允许服务器的时候先进行端口扫描,目的就是看对方的服务器上允许着什么服务,若一扫描看到80端口,就知道对方是一个web服务;看到3389端口,就知道对方是远程桌面服务。再看对方的这个服务是不是有什么漏洞再想办法入侵。

    5.3 如何更改服务使用默认端口

    可以迷惑黑客,若本台计算机上运行远程桌面服务,那么黑客扫描到我在侦听3389端口,就知道我是远程桌面服务;若将端口改成4000,黑客就不知道这是什么服务。更改端口可以让我们的服务器更安全。

    5.4 如何甚至window网络安全

    在网卡上只开发必要的端口

    6. 传输层(计算机网络)

    6.1 传输层的功能

    • 功能:为相互通信的应用进程提供了逻辑通信

    • 与网络层的区别:网络层是将数据包从地址2转到地址1;让一台计算机上的应用程序找到另一台计算机的应用程序,实现方法就是TCP+端口

    • 传输层协议和网络层协议的区别
      传输层协议:提供应用进程之间的通信
      网络层协议:提供主机之间的通信

    • 传输层对收到的报文进行差错检测
    • 传输层提供面向连接和面向无连接的服务,TCP协议面向连接,UDP协议面向无连接

    6.2 传输层的端口

    • 网络层数据包的首部中一个字节的“协议”字段:用协议号来区分数据包里的数据是TCP还是UDP(TCP的协议号是6;UDP的协议号是17;ICMP的协议号是1;IGMP的协议号是2;)
    • 传输层用端口号来区分上一层是什么服务
    • 每一层都要有一个方法来区分上一层

    TCP端口

    • 用16位二进制进行标识
    • 端口号只具有本地意义,本地唯一,比如一个计算机上运行WEB服务、FTP服务、SMTP服务,那么这三种服务的端口号不能重复
    • 对于客户端,打开IE浏览器,输入一个网址,这个窗口就会和服务器通信,就会产生一个源端口1455。若又打开一个IE浏览器,又访问一个网址,该IE窗口会产生另外一个端口号1456,这些源端口也不可以重复,否则从服务器回来的数据包就不知道该给哪个窗口。访问web站点的时候,在通信接收前,源端口号是不变的。
    • 端口取值范围0~65535,分以下3钟
      (1)熟知的端口:0~1023:FTP是21;TELNET是23;SMTP是25;DNS是53;HTTP是80;https是443;
      (2)登记端口号:1024~49151:RDP是3389.(后面开发出新的程序的人,所占用的端口)
      (3)客户端口号:4915265535:我们访问一个web站点,我们产生的源端口是从4915265535这里产生一个随机数
    • 小技巧
    C:UsersRuanc>netstat -n : find "ESTABLISHED"
    
    显示协议统计信息和当前 TCP/IP 网络连接。
    
    NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]
    
      -a            显示所有连接和侦听端口。
      -b            显示在创建每个连接或侦听端口时涉及的
                    可执行程序。在某些情况下,已知可执行程序承载
                    多个独立的组件,这些情况下,
                    显示创建连接或侦听端口时
                    涉及的组件序列。在此情况下,可执行程序的
                    名称位于底部 [] 中,它调用的组件位于顶部,
                    直至达到 TCP/IP。注意,此选项
                    可能很耗时,并且在你没有足够
                    权限时可能失败。
      -e            显示以太网统计信息。此选项可以与 -s 选项
                    结合使用。
      -f            显示外部地址的完全限定
                    域名(FQDN)。
      -n            以数字形式显示地址和端口号。
      -o            显示拥有的与每个连接关联的进程 ID。
      -p proto      显示 proto 指定的协议的连接;proto
                    可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s
                    选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:
                    IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
      -q            显示所有连接、侦听端口和绑定的
                    非侦听 TCP 端口。绑定的非侦听端口
                     不一定与活动连接相关联。
      -r            显示路由表。
      -s            显示每个协议的统计信息。默认情况下,
                    显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
                    -p 选项可用于指定默认的子网。
      -t            显示当前连接卸载状态。
      -x            显示 NetworkDirect 连接、侦听器和共享
                    终结点。
      -y            显示所有连接的 TCP 连接模板。
                    无法与其他选项结合使用。
      interval      重新显示选定的统计信息,各个显示间暂停的
                    间隔秒数。按 CTRL+C 停止重新显示
                    统计信息。如果省略,则 netstat 将打印当前的
                    配置信息一次。
    
  • 相关阅读:
    经典javascript
    大话prototype
    DataTable使用方法总结
    实验四 Web服务器1socket编程
    2.4 OpenEuler中C语言中的函数调用测试
    20191323王予涵第13章学习笔记
    20191323王予涵第十三章学习笔记
    2.5 OpenEuler 中C与汇编的混合编程
    个人贡献
    20191323王予涵第十二章学习笔记
  • 原文地址:https://www.cnblogs.com/deer-cen/p/12321250.html
Copyright © 2011-2022 走看看