欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    计算机网络理论笔记.docx

    • 资源ID:14227531       资源大小:1.65MB        全文页数:48页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机网络理论笔记.docx

    1、计算机网络理论笔记计算机网络(谢希仁第五版)一、 ISO和TCP/IP的层以下是各层的核心功能(注意是核心功能,而不是基本功能,所以和许多书上的描述不一样)L1,物理层。负责相邻两个节点之间的比特流的传输,数据单元是比特。L2,数据链路层。在数据链路间正确的传输帧,数据单元是帧。L3,网络层。在端到端之间正确的传输分组,数据单元是分组(也叫作包packet)。IPL4,传输层。在端到端之间正确的传输消息(也叫作报文)。TCP,UDPL5,会话层。负责会话的进程管理。L6,表示层。负责数据的压缩/解压缩、加密/解密、不同系统之间数据格式的转换。L7,应用层。系统与用户之间的接口。分层的原因: 下

    2、层是将功能封装起来通过一个统一的接口提供给上层使用的,这样上层就不用再因为下层的不同而分别考虑问题了,如数据链路层的帧传输就不用考虑不同物理层介质的比特率不同问题,网络层的包传输同样不会考虑链路层的帧结构不同问题。上层是通过调用已封装好的下层功能进行功能的升华。感觉就和编程中的接口思想类似。 TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,

    3、每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连接。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),即规定了数据传输时的基本单元和格式,还

    4、定义了数据包的递交办法和路由选择。如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。定义了将数据组成正确帧的规程和在网络中传输帧的规程,帧是指一串数据,它是数据在网络中传输的单位。 物理层:对应于网络的基本硬件,这也是Internet物理构成,即我们可以看得见的硬设备,如PC机、互连网服务器、网络设备等,必须对这些硬设备的电气特性作一个规范,使这些设备都能够互相连接并兼容使用。IP:IP协议规定了数据传输时的基本单元和格式。如果比作货物运输,IP协议规定了货物打包时的包装箱尺寸和包装的程序。 除了这些以外,

    5、IP协议还定义了数据包的递交办法和路由选择。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 TCP:在IP协议中定义的传输是单向的,也就是说发出去的货物对方有没有收到我们是不知道的。就好像8毛钱一份的平信一样。那对于重要的信件我们要寄挂号信怎么办呢?TCP协议就是帮我们寄“挂号信”的。TCP协议提供了可靠

    6、的面向对象的数据流传输服务的规则和约定。简单的说在TCP模式中,对方发一个数据包给你,你要发一个确认数据包给对方。通过这种确认来提供可靠性。如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号(ISN)和确认(ack),所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。UDP:UDP与TCP位于同一层,但对于

    7、数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询-应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。IPv4最致命的两个缺陷在于: 地址只有32位,IP地址空间有限; 不支持服务等级(Quality of Service,QoS)的想法,无法管理带宽和优先级,故而不能很好的支持现今越来越多的实时的语音和视频应用。因此IPv6(128 bits)浮出海面

    8、,用以取代IPv4。二、 网络层1. IP头struct ip#if _BYTE_ORDER = _LITTLE_ENDIAN unsigned int ip_hl :4; /* header length 以4字节为单位*/ unsigned int ip_v :4; /* version */#endif#if _BYTE_ORDER = _BIG_ENDIAN unsigned int ip_v :4; /* version */ unsigned int ip_hl :4; /* header length */#endif u_int8_t ip_tos; /* type of se

    9、rvice */ u_short ip_len; /* total length IP数据的长度,以字节为单位。 */ u_short ip_id; /* identification */ u_short ip_off; /* fragment offset field 碎片偏移,这和上面ID 一起用来重组碎片*/#define IP_RF 0x8000 /* reserved fragment flag */#define IP_DF 0x4000 /* dont fragment flag */#define IP_MF 0x2000 /* more fragments flag */#

    10、define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ u_int8_t ip_ttl; /* time to live 每经过一个路由的时候减一,直到为0时被抛弃*/ u_int8_t ip_p; /* protocol 表示创建这个IP数据包的高层协议,如TCP,UDP协议*/ u_short ip_sum; /* checksum 首部校验和,提供对首部数据的校验*/ struct in_addr ip_src, ip_dst; /* source and dest address 发送者和接收者的IP地址 */;2. ICMP头

    11、 ICMP(Internet Control Message Protocol)Internet控制报文协议,处于网络层。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。struct icmphdr u_int8_t type; /* message type */ u_int8_t code; /* type sub-code */ u_int16_t checksum; union struct u_int16_t id;

    12、u_int16_t sequence; echo; /* echo datagram */ u_int32_t gateway; /* gateway address */ struct u_int16_t _unused; u_int16_t mtu; frag; /* path mtu discovery */ un;三、 传输层1. TCP和UDP的区别1) TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务;2) TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复

    13、、乱序,应用程序需要负责传输可靠性方面的所有工作;3) 也正因为以上特征,UDP具有较好的实时性,工作效率较TCP协议高;4) UDP段结构比TCP的段结构简单,因此网络开销也小。2. UDP头struct udphdr u_int16_t source; u_int16_t dest; u_int16_t len; u_int16_t check;3. TCP头struct tcphdr u_int16_t source; /*发送TCP数据的源端口*/ u_int16_t dest; /*接受TCP数据的目的端口*/ u_int32_t seq; /*标识该TCP所包含的数据字节的开始序列

    14、号*/ u_int32_t ack_seq; /*确认序列号,表示接受方下一次接受的数据序列号*/#if _BYTE_ORDER = _LITTLE_ENDIAN u_int16_t res1 :4; u_int16_t doff :4; u_int16_t fin :1; u_int16_t syn :1; u_int16_t rst :1; u_int16_t psh :1; u_int16_t ack :1; u_int16_t urg :1; u_int16_t res2 :2;#elif _BYTE_ORDER = _BIG_ENDIAN u_int16_t doff:4; /*数据

    15、首部长度.和IP协议一样,以4字节为单位.一般的时候为5*/ u_int16_t res1:4; /*/ u_int16_t res2:2; /*/ u_int16_t urg:1; /*如果设置紧急数据指针,则该位为1*/ u_int16_t ack:1; /*如果确认号正确,那么为1*/ u_int16_t psh:1; /*如果设置为1,那么接收方收到数据后,立即交给上一层程序*/ u_int16_t rst:1; /*为1的时候,表示请求重新连接*/ u_int16_t syn:1; /*为1的时候,表示请求建立连接*/ u_int16_t fin:1; /*为1的时候,表示亲戚关闭连

    16、接*/#endif u_int16_t window; /*窗口,告诉接收者可以接收的大小*/ u_int16_t check; /*对TCP数据进行较核*/ u_int16_t urg_prt; /*如果urg=1,那么指出紧急数据对于历史数据开始的序列号的偏移值*/;在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j,即初始化序列号(ISN))到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k

    17、),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 其中第二步就是SYN-ACK (SYN_RCVD),也就是你可以用netstat命令看到的。一般来说,在第二步的时候,服务器会分配内存,给客户机响应,等待客户机回答,如果收到回答,即完成第三步,那就建立连接(ESTABLISHED);如果客户机在第二步的时候网断了,服务器会一直等待直到timeout。 这也可能引起安全问题,著名的DDoS攻击就是利用TCP这个固有的漏洞

    18、,即如果很多客户机只启动第一步,那这样服务器会很快耗尽内存而宕机。你可以用netstat观察连接,如果SYN_RCVD状态很多的话,你可能受到攻击了。完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念: 未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。 Backlog参数:表示未连接队列的最大容纳数目。 S

    19、YN-ACK 重传次数:服务器发送完SYNACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。 半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务器从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。4. TCP/IP三次握手的过程和抓包分析原理深入分析简述TCP三次握手过程,并说明为什么要3次握手? TCP 连接是通

    20、过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。2. 服务器收到客户端发送过来的SYN报文后,向客户端发送一个SYN和ACK都置位的TCP报文,其中包含它选择的初始序列号y对客户端的序列号的确认x+1和一个窗口大小(表示服务器上用来存储从客户端发送来的传入段的缓冲区的大小)。3. 客户端接收到服务器端返回的SYN+ACK报文后,向服务

    21、器端返回一个确认号y+1和序号x+1的ACK报文,一个标准的TCP连接完成。TCP 使用类似的握手过程来结束连接。这可确保两个主机均能完成传输并确保所有的数据均得以接收。TCP Client Flags TCP Server 1 Send SYN (seq=x) -SYN- SYN Received 2 SYN/ACK Received ACK Received, Connection Established 握手阶段: 序号方向 seq ack 1A-B 10000 0 2 B-A 20000 10000+1=10001 3 A-B 10001 20000+1=20001 解释: 1:A向B

    22、发起连接请求,以一个随机数初始化A的seq,这里假设为10000,此时ACK0 2:B收到A的连接请求后,也以一个随机数初始化B的seq,这里假设为20000,意思是:你的请求我已收到,我这方的数据流就从这个数开始。B的ACK是A的seq加1,即10000110001 3:A收到B的回复后,它的seq是它的上个请求的seq加1,即10000110001,意思也是:你的回复我收到了,我这方的数据流就从这个数开始。A此时的ACK是B的seq加1,即20000+1=20001 数据传输阶段: 序号方向seqack size23A-B4000070000151424B-A7000040000+1514

    23、-54=414605425A-B4146070000+54-54=70000151426B-A7000041460+1514-54=4292054 解释: 23:B接收到A发来的seq=40000,ack=30000,size=1514的数据包 24:于是B向A也发一个数据包,告诉B,你的上个包我收到了。B的seq就以它收到的数据包的ACK填充,ACK是它收到的数据包的SEQ加上数据包的大小(不包括以太网协议头,IP头,TCP头),以证实B发过来的数据全收到了。 25:A在收到B发过来的seq为41460的数据包时,一看到41460,正好是它的上个数据包的seq加上包的大小,就明白,上次发送的

    24、数据包已安全到达。于是它再发一个数据包给B。这个正在发送的数据包的seq也以它收到的数据包的ACK填充,ACK就以它收到的数据包的seq(70000)加上包的size(54)填充,即ack=70000+54-54(全是头长,没数据项)。 26:一样的啊 四、 应用层1. DHCP协议DHCP 是 Dynamic Host Configuration Protocol的缩写,前身是BOOTP。BOOTP 原本是用于无磁碟主机连接的网络上面的,网络主机使用BOOT ROM 而不是磁碟起动并连接上网络,BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前

    25、须事先获得客户端的硬体地址,而且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 动态性 ,若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常可观的浪费。 DHCP 可以说是 BOOTP 的增强版本,它分为两个部份一个是服务器端,而另一个是客户端。所有的 IP 网络设定资料都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境资料。比较起 BOOTP ,DHCP 透过 租约 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考量,DHCP 也完全照顾了 BOOTP Client 的需求。 DHCP

    26、 的分配形式 首先,必须至少有一台 DHCP 服务器工作在网络上面,它会监听网络的 DHCP 请求,并与客户端搓商 TCP/IP 的设定环境。它提供两种 IP 定位方式 (1) Automatic Allocation 自动分配,其情形是一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后,就永远使用这个地址。 (2) Dynamic Allocation 动态分配,当 DHCP 第一次从 HDCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先

    27、的延续(renew)租约,或是租用其它的 IP 地址。 动态分配显然比自动分配更加灵活,尤其是当您的实际 IP 地址不足的时候,例如您是一家 ISP ,只能提供 200 个IP地址用来给拨接客户,但并不意味着您的客户最多只能有 200 个。因为要知道,您的客户们不可能全部同一时间上网的,除了他们各自的行为习惯的不同,也有可能是电话线路的限制。这样,您就可以将这 200 个地址,轮流的租用给拨接上来的客户使用了。这也是为什么当您查看 IP 地址的时候,会因每次拨接而不同的原因了(除非您申请的是一个固定 IP ,通常的 ISP 都可以满足这样的要求,这或许要另外收费)。当然,ISP 不一定使用 D

    28、HCP 来分配地址,但这个概念和使用 IP Pool 的原理是一样的。 DHCP 除了能动态的设定 IP 地址之外,还可以将一些 IP 保留下来给一些特殊用途的机器使用,它可以按照硬体地址来固定的分配 IP 地址,这样可以给您更大的设计空间。同时,DHCP 还可以帮客户端指定routernetmaskDNS ServerWINS Server等等项目,您在客户端上面,除了将 DHCP 选项打勾之外,几乎无需做任何的 IP 环境设定。 DHCP 的工作原理 视乎客户端是否第一次登录网络,DHCP 的工作形式会有所不同。 (1) 第一次登录的时候 1. 寻找 Server。当 DHCP 客户端第一

    29、次登录网络的时候,也就是客户发现本机上没有任何IP 资料设定,它会向网络发出一个 DHCPDISCOVER 封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为 0.0.0.0 ,而目的地址则为 255.255.255.255 ,然后再附上 DHCPDISCOVER 的信息,向网络进行广播。 在 Windows 的预设情形下,DHCPDISCOVER 的等待时间预设为 1 秒,也就是当客户端将第一个 DHCPDISCOVER 封包送出去之后,在 1 秒之内没有得到回应的话,就会进行第二次 DHCPDISCOVER 广播。若一直得不到回应的情况下,客户端一共会有四次 DHCPDIS

    30、COVER 广播(包括第一次在内),除了第一次会等待 1 秒之外,其余三次的等待时间分别是 91316 秒。如果都没有得到 DHCP 服务器的回应,客户端则会显示错误信息,宣告 DHCPDISCOVER 的失败。之后,基于使用者的选择,系统会继续在 5 分钟之后再重复一次 DHCPDISCOVER 的过程。 2. 提供 IP 租用地址。当 DHCP 服务器监听到客户端发出的 DHCPDISCOVER 广播后,它会从那些还没有租出的地址范围内,选择最前面的的空置IP ,连同其它 TCP/IP 设定,回应给客户端一个 DHCPOFFER 封包。 由于客户端在开始的时候还没有 IP 地址,所以在其

    31、DHCPDISCOVER 封包内会带有其 MAC 地址信息,并且有一个XID 编号来辨别该封包,DHCP 服务器回应的 DHCPOFFER 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定,DHCPOFFER 封包会包含一个租约期限的信息。 3. 接受IP 租约。如果客户端收到网络上多台 DHCP 服务器的回应,只会挑选其中一个 DHCPOFFER 而已(通常是最先抵达的那个),并且会向网络发送一个DHCPREQUEST广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的IP地址。 同时,客户端还会向网络发送一个 ARP 封包,查询网络上面有没有其它机器使用该 IP 地址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLINE 封包给 DHCP 服务器,拒绝接受其DHCPOFFER,并重新发送 DHCP


    注意事项

    本文(计算机网络理论笔记.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开