TCPIP详解学习笔记-非常全
TCPIP详解读书笔记(第九章IP选路
TCP/IP详解读书笔记(第九章 IP选路)选路是IP最重要的功能之一。
图1是IP层处理过程的简单流程。
需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生。
在后一种情况下,主机必须配置成一个路由器,否则通过网络接口接收到的数据报,如果目的地址不是本机就要被丢弃。
图1:IP层工作流程图1中的路由表经常被IP访问(在一个繁忙的主机上,一秒钟内可能要访问几百次),但是它被路由守护程序等更新的频度却要低得多(可能大约30秒一次)。
选路的原理IP搜索路由表的几个步骤:1) 搜索匹配的主机地址;2) 搜索匹配的网络地址;3) 搜索默认表项(默认表项一般在路由表中被指定为一个网络表项,其网络号为0)。
匹配主机地址步骤始终发生在匹配网络地址步骤之前。
IP层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。
这区别于选路策略,它只是一组决定把哪些路由放入路由表的规则。
IP执行选路机制,而路由守护程序则一般提供选路策略。
ICMP主机与网络不可达差错当路由器收到一份IP数据报但又不能转发时,就要发送一份ICMP“主机不可达”差错报文(见第六章)。
ICMP重定向差错当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。
这在概念上是很简单的,正如图2所示的那样。
只有当主机可以选择路由器发送分组的情况下,我们才可能看到ICMP重定向报文。
图2:ICMP重定向例子1) 我们假定主机发送一份IP数据报给R1。
这种选路决策经常发生,因为R 1是该主机的默认路由。
2) R1收到数据报并且检查它的路由表,发现R2是发送该数据报的下一站。
当它把数据报发送给R2时,R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器所在的LAN)。
这样就给路由器发送重定向报文给原始发送端提供了线索。
3) R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。
tcpip详解卷阅读笔记(4)TCP
/net/201201/116442.html最后终于来到了大块头TCP协议,为了给应用层提供可靠的传输服务,tcp协议设计了各种机制以实现丢包、重发、乱序、链路传输错误等传输过程中可能出现的错误。
1. TCP协议概述我们首先来看一下TCP协议的首部,它将给收发两端提供怎样的信息:与UDP一样,TCP报头的前8个字节也是源和目的端的端口号。
<源ip地址,源端口号,目的ip地址,目的端口号>(即一个socket pair)确定一条tcp连接。
序列号用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
反过来,确认序列号是表示TCP发端期望从TCP收端收到的下一个字节(好像说得不是很清楚,后面再说)。
首部长度给出首部中32bit字的数目,跟IP首部一样,TCP最多有60字节的首部。
接下来是6个标志比特,它们中的多个可以被同时设置为1:URG:紧急指针有效,与后面的紧急指针结合起来ACK:确认序号有效PSH:接收方尽快将这个报文段交给应用层RST:重建连接SYN:同步序号用来发起一个连接FIN:发端完成发送任务,将要关闭连接检验和的计算方法和UDP中的检验和一样,也要加上伪首部,也要填充奇数字节,与UDP不同的是,TCP强制要求计算检验和,而UDP的检验和是可选的。
窗口大小表明接收端当前的接收能力,以字节为单位,16位窗口限制了最大值为65535字节,在选项字段中,有一个窗口刻度选项,允许这个值按比例放大。
紧急指针是一个正的偏移量,和序号中的值相加表示紧急指针最后一个字节的序号。
选项字段可以包括最长报文大小(MSS),这是最常见的可选字段。
每个连接方通常都在通信的第一个报文段中指明这个选项,表明本端所能接收的最大长度的报文段;还有上面我们提到的窗口扩大选项以及时间戳选项,我们将在后面看到时间戳选项的作用。
这里摘录一段话来描述TCP协议:“TCP可以表述为一个没有选择确认或否认的滑动窗口协议。
TCPIP笔记
以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP 还是RARP 协议的数据报,然后交给相应的协议处理。
假如是IP 数据报,IP 协议再根据IP 首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP 还是IGMP,然后交给相应的协议处理。
假如是TCP 段或UDP 段,TCP 或UDP 协议再根据TCP 首部或UDP 首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。
IP 地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP 地址和端口号合起来标识网络中唯一的进程。
注意,虽然IP、ARP 和RARP 数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP 和RARP 属于链路层,IP 属于网络层。
虽然ICMP、IGMP、TCP、UDP 的数据都需要IP 协议来封装成数据报,但是从功能上划分,ICMP、IGMP 与IP 同属于网络层,TCP 和UDP 属于传输层。
其中的源地址和目的地址是指网卡的硬件地址(也叫MAC 地址),长度是48位,是在网卡出厂时固化的。
用ifconfig 命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。
协议字段有三种值,分别对应IP、ARP、RARP。
帧末尾是CRC 校验码。
注意到源MAC 地址、目的MAC 地址在以太网首部和ARP 请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型,0x0800为IP 地址,后面两个地址长度对于以太网地址和IP 地址分别为6和4(字节),op 字段为1表示ARP 请求,op字段为2表示ARP 应答。
TCPIP基础82个知识点
1.不同厂商、不同型号、运行不同操作系统的计算机之间能够通过TCP/IP协议栈实现相互之间的通信。
2.TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代得到了广泛的应用。
3.TCP/IP是一个真正的开放系统,是网络互联的基础。
4.20世纪60年代以来,计算机网络得到了飞速增长。
各大厂商为了在数据通信网络领域占据主导地位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA,Novell IPX/SPX协议,Apple公司的AppleTalk协议,DEC公司的DECnet,以及广泛流行的TCP/IP协议。
同时,各大厂商针对自己的协议生产出了不同的硬件和软件。
各个厂商的共同努力促进了网络技术的快速发展和网络设备种类的迅速增长。
但由于多种协议的并存,也使网络变得越来越复杂;而且,厂商之间的网络设备大部分不能兼容,很难进行通信。
5.为了解决网络之间的兼容性问题,帮助各个厂商生产出可兼容的网络设备,国际标准化组织ISO于1984年提出了OSI RM(Open System Interconnection Reference Model,开放系统互连参考模型)。
OSI 参考模型很快成为计算机网络通信的基础模型。
在设计OSI 参考模型时,遵循了以下原则:各个层之间有清晰的边界,实现特定的功能;层次的划分有利于国际标准协议的制定;层的数目应该足够多,以避免各个层功能重复。
6.OSI参考模型具有以下优点:简化了相关的网络操作;提供即插即用的兼容性和不同厂商之间的标准接口;使各个厂商能够设计出互操作的网络设备,促进标准化工作;防止一个区域网络的变化影响另一个区域的网络,结构上进行分隔,因此每一个区域的网络都能单独快速升级;把复杂的网络问题分解为小的简单问题,易于学习和操作。
7.OSI参考模型分为七层,由下至上依次为第一层物理层(Physical layer)、第二层数据链路层(Data link layer)、第三层网络层(Network layer)、第四层传输层(Transport layer)、第五层会话层(Session layer)、第六层表示层(Presentation layer)、第七层应用层(Application layer)。
TCPIP复习要点(答案自己整理非标准)
TCPIP复习要点(答案自己整理非标准)一、概述1、TCP/IP体系结构(与OSI模型的对照)应用层,传输层,网络层,数据链路层,物理层。
OSI 应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
2、每层的主要协议应用层:DNS,FTP,TFTP,SMTP,SMNP传输层:UDP,TCP网络层:ICMP,IGMP,ARP,RARP,IP数据链路层,物理层:由底层网络定义的协议。
3、数据在每层的封装过程应用层::首部+数据传输层:TCP首部+上层数据网络层:IP首部+上层数据数据链路层:以太网首部+上层数据+以太网尾部物理层:比特流4、每层PDU(协议数据单元)的名称物理层:比特流数据链路层:帧网络层:分组传输层:报文段二、数据链路层协议1、以太网的协议结构(层次)应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
2、MAC帧的格式帧头,数据部分,帧尾。
其中,帧头和帧尾包含一些必要得控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如ip数据报。
MAC帧的帧头包括三个字段。
前两个字段分别为6字节长的目的地址字段和源地址字段,目的地址字段包含目的MAC地址信息,源地址字段包含源MAC地址信息。
第三个字段为2字节的类型字段,里面包含的信息用来标志上一层使用的是什么协议,以便接收端把收到的MAC帧的数据部分上交给上一层的这个协议。
MAC帧的数据部分只有一个字段,其长度在46到1500字节之间,包含的信息是网络层传下来的数据。
MAC帧的帧尾也只有一个字段,为4字节长,包含的信息是帧校验序列FCS(使用CRC校验)。
3、MTU(最大数据传输单元)的含义是指一种通信协议的某一层上面所能通过的最大数据包大小。
4、MAC地址MAC地址是识别LAN(局域网)节点的标识。
网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM,它存储的是传输数据时真正赖以标识发出数据的主机和接收数据的主机的地址。
【TCPIP】TCP详解笔记
【TCPIP】TCP详解笔记⽬录前⾔本笔记记录 TCP/IP 中的 TCP 理论。
包括三次握⼿、四次挥⼿、状态变迁、慢启动、快重传等等。
《TCP/IP详解》⼀共三卷,其中卷⼆、卷三更多偏重于编程细节,⽽卷⼀更多偏重于基础原理。
后⾯再发布个⽀持处理多线程并发及客户端数量限制的TCP服务端+TCP客户端例程。
17. TCP 传输控制协议17.1 引⾔17.2 TCP 服务TCP提供⼀种⾯向连接的、可靠的字节流服务。
TCP通过下列⽅式来提供可靠性:应⽤数据被分割成TCP认为最适合发送的数据块。
由 TCP传递给IP的信息单位称为报⽂段或段(segment)。
当TCP发出⼀个段后,它启动⼀个定时器,等待⽬的端确认收到这个报⽂段。
如果不能及时收到⼀个确认,将重发这个报⽂段。
当TCP收到发⾃TCP连接另⼀端的数据,它将发送⼀个确认。
这个确认不是⽴即发送,通常将推迟⼏分之⼀秒。
TCP将保持它⾸部和数据的检验和。
这是⼀个端到端的检验和,⽬的是检测数据在传输过程中的任何变化。
如果收到段的检验和有差错, TCP将丢弃这个报⽂段和不确认收到此报⽂段(希望发端超时并重发)。
TCP报⽂段作为 IP 数据报来传输,⽽IP数据报的到达可能会失序,因此TCP报⽂段的到达也可能会失序。
如果必要,TCP将对收到的数据进⾏重新排序,将收到的数据以正确的顺序交给应⽤层。
IP数据报会发⽣重复,TCP的接收端必须丢弃重复的数据。
TCP还能提供流量控制。
TCP连接的每⼀⽅都有固定⼤⼩的缓冲空间。
TCP的接收端只允许另⼀端发送接收端缓冲区所能接纳的数据。
(窗⼝)字节流服务(byte stream service):两个应⽤程序通过TCP连接交换8 bit字节构成的字节流。
TCP不在字节流中插⼊记录标识符。
17.3 TCP的⾸部视图:端⼝:每个TCP段都包含源端和⽬的端的端⼝号,⽤于寻找发端和收端应⽤进程。
这两个值加上IP⾸部中的源端IP地址和⽬的端IP地址唯⼀确定⼀个TCP连接。
TCPIP协议分析知识点总结
TCPIP协议分析知识点总结一、TCP/IP协议简介TCP/IP是一组用于网络通信的协议,它包括多个层次,每个层次都由一组相互关联、协同工作的协议组成,这些协议按照其功能分成不同的层次。
TCP/IP协议家族是互联网标准协议。
1.TCP/IP层次结构TCP/IP协议族是一个层次结构的协议族。
TCP/IP协议家族由四个层次组成,分别是网络接口层、网际层、传输层和应用层。
- 网络接口层:此层负责定义操作系统与网络硬件接口之间的通信方式。
- 网际层:此层的主要功能是进行数据包的寻址和路由。
即负责将数据发送到目的地址并最终将数据包传递给网络接口层。
- 传输层:此层负责在源和目的节点之间提供可靠的数据传输服务,常用的传输层协议包括TCP(传输控制协议)和UDP(用户数据报协议)。
- 应用层:此层包含了很多应用程序需要的协议,例如HTTP、FTP、TELNET、SMTP等。
2.TCP/IP通信特点TCP/IP协议族的特点包括:- 分层结构,每一层都有自己的功能和协议,各层之间相互关联、协同工作。
- 独立性,每个层次的协议都是独立的,修改其中一个层次的协议不会影响其他层次的协议。
- 开放性,TCP/IP协议族是一个开放的标准,任何人都可以使用该协议族进行通讯。
- 可靠性,TCP/IP协议族内部有多种机制保证数据传输的可靠性。
- 灵活性,TCP/IP协议族在实际应用中可以根据需要进行灵活的组合。
3.TCP/IP协议族的发展TCP/IP协议族的发展经历了多个阶段:- ARPANET阶段:TCP/IP最早是由美国国防部高级研究计划局(ARPA)于1969年开始建立的。
ARPA最初的目的是为了研究如何使不同类型的计算机互相通讯。
- TCP/IP阶段:ARPA提出了一个新的通讯协议,即TCP/IP协议。
1982年,TCP/IP成为国际标准。
- Internet阶段:1980年代末和1990年代初,TCP/IP协议开始在全球范围内使用,逐渐成为全球网络的标准协议。
TCPIP详解读书笔记(第三章 网际协议
TCP/IP详解读书笔记(第三章网际协议)第三章 IP:网际协议IP是TCP/IP协议族中最为核心的协议。
所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输(如图1所示)。
图1IP提供不可靠、无连接的数据报传送服务。
不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。
IP仅提供最好的传输服务。
如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。
任何要求的可靠性必须由上层来提供(如TCP)。
无连接(connectionless)的意思是IP并不维护任何关于后续数据报的状态信息。
每个数据报的处理是相互独立的。
这也说明,IP 数据报可以不按发送顺序接收。
如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。
IP首部IP数据报的格式如图2所示。
普通的IP首部长为20个字节,除非含有选项字段。
图2:IP数据报头部格式其中:●版本(Version)字段:占4比特。
用来表明IP协议实现的版本号,当前一般为IPv4,即0100。
●报头长度(Internet Header Length,IHL)字段:占4比特。
是头部占32比特的数字,包括可选项。
普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。
此字段最大值为60字节。
●服务类型(Type of Service ,TOS)字段:占8比特。
其中前3比特为优先权子字段(Precedence,现已被忽略)。
第8比特保留未用。
第4至第7比特分别代表延迟、吞吐量、可靠性和花费。
当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。
这4比特的服务类型中只能置其中1比特为1。
可以全为0,若全为0则表示一般服务。
服务类型字段声明了数据报被网络系统传输时可以被怎样处理。
TCPIP协议详解卷1学习笔记系列3-IP路由
TCP/IP协议详解卷1学习笔记系列3-IP路由第1卷第九章 IP路由本章讲述的是做为TCP/IP协议簇的基础。
IP路由保证能为数据报找到正确的发送路径。
如果实在找不到,则通知发送方发放失败。
在找路过程中所作用的信息,由两方面来维护:每个主机都维护有自身的路由表(windows下用 route print打印出当前的路由表)。
由于一般主机上只有一个网卡,因此路由表都比较简单,包含一个环回接口(127.0.0.1)和当前使用的IP,如果连网卡也没有,那就只有环回地址了。
对所有发往127.0.0.1,localhost的数据报都在发往链路层(常见的就是以太网驱动层)前,就转往IP 输入表了。
而对发往自身IP的数据在发到链路层后,链路层在检查到这个地址是自身后,再发往IP输入表。
对发往其他地址的数据报,选用的接口就是网卡,全部发到网卡上。
默认路由也是这个接口。
如果安装了多张网卡,windows的服务器版可以开启路由转发功能,也就是可以当做路由器用。
如果只装了一张网卡,也使用转发功能,而实际上还是“从哪里来,到哪里去”,根本就达不到“选路”的目的。
这样主机在收到一个数据报时,先检查是不是发给自己的。
如果是,就是正常的通讯,直接处理。
如果不是,就根据是否可以转发的选项(是否开启路由转发功能),来决定是直接丢弃数据报,还是从网络接口中找一个合适的转发出去。
如果决定转发,这时才真正涉及到“找路”。
主机和路由器各自都有一个路由表。
首先检查路由表里的指向主机的那些表项,看是不是有哪一个条目就是要发往的目的地址。
如果找到了,直接发往这个主机。
如果找不到,再查指向网络号的那些表项,看主机要发往的网络是不是已经有记录。
如果找到了,就发往这个网络要经过的接口。
如果这些都找不到,就把这个数据报发往默认路由,由默认路由去处理。
通常默认路由的表项更多,有更多的信息能找到要发往的目的地。
如果默认路由还找不到,就再发往它的默认路由,一直到顶层。
TCPIP学习笔记
《TCP/IP详解》学习笔记1——链路层重点知识:链路层的作用、以太网的封装、SLIP和PPP协议以及链路的重要特性(MTU和串行线路吞吐量的计算)。
1、链路层的作用为IP模块发送和接收IP数据报;为ARP模块发送ARP请求和接收ARP应答;为RARP模块发送RARP请求和接收RARP应答;2、以太网的封装SA(6) | DA(6) | TYPE(2) | DA TA(46-1500) | CRC(4)两字节的TYPE字段定义了后续数据的类型,用来说明生成数据的网络层协议。
0x0800表示数据类型为IP数据报,0x0806表示ARP请求/应答。
此外,以太帧中数据段部分有最小长度要求46字节,在数据长度不够时需插入填充字节。
3、两种协议SLIP——串行线路协议;PPP是点对点协议。
两种协议都是在串行线路上封装IP数据报的方法,提供了一种低速接入的解决方案。
以这种方式入网时,用户需要的设备包括一台PC、一条电话线、一台调制解调器(MODEM)、一根RS-232电缆,利用调制解调器通过公共电话网进行Internet连接。
使用SLIP或PPP协议与主机通信,使本地PC具有IP地址,成为Internet的一部分。
以这种方式上网的用户,每次在连接Internet时会被临时分配到一个IP地址,这样的地址称为动态IP地址。
4、链路的重要特性每一种数据链路层协议对数据帧的长度都有一个限制,其最大值称为MTU,超过这个值就要进行分片。
串行线路吞吐量的计算:如果线路速率是9600 b/s,而一个字节有8bit,加上一个起始比特和一个停止比特,那么线路的速率就是9600 / ( 8 + 2 ) = 960 B/s(字节/秒)。
如果传输1024字节就需要1024 / 960 = 1066 ms。
使用环回接口的原因:为了标识和管理网络设备(如路由器、pc),我们通常会利用到这些设备的接口(包括物理接口和逻辑接口)上设置的IP地址。
TCPIP基本知识总结
技术总结一.IP网络互联基础1 . IP地址:配置在主机,设备接口上的逻辑地址;由32位二进制组成,用点分十进制表示。
IP地址分成网络号和主机号两个部分:网络号表示某个IP子网,主机号表示本子网的某台主机。
2 . 子网掩码:用来区分网络号和主机号。
用连续的“1”表示IP地址的网络号,用连续的“0”表示主机号。
3 . 网络地址:主机号全为0的IP地址定向广播地址:主机号全为1的IP地址4 . 数据包的封装与解封装5 . 同一网段主机互访分析:同一网段的主机互访,直接进行MAC封装,就可到达。
不同网段的主机互访分析:不同网段的主机互访,要经过网关中转后才能到达。
二.层次化与数据流分析1 .层次化配置:a.基本信息配置:密码(console/Telnet/enable)主机名,时区等。
b.接口配置与链路测试:局域网接口配置(物理层——链路层——网络层——打开接口)局域网链路测试,广域网接口配置与链路测试。
c.路由配置与测试:路由配置(IGP/BGP)全网连通性测试,路径跟踪测试。
d.上层业务配置与测试2 . 层次化排错:a.5两个路由器之间的链路是否通?b.两个路由器之间的路由是否通?c.上层是否配置了控制策略?3 . 层次化方法:先分析高层网络,分析时,把底层网络当做云图来看待。
再逐个打开底层网络云图,进行底层网络分析。
4 .层次化数据流分析三.IP地址分配1 .IP地址分类2.私有地址:3.IP子网划分:a.定长子网掩码划分b.变长子网掩码划分四.TCP/IP协议基础1.OSI参考模型处理数据格式,数据加密等建立,维护和管理会话端到端连接寻址和路由选择提供介质访问,链路管理等比特流传输2.TCP/IP协议栈应用层:DHCP、DNS、Telnet、HTTP、FTP、TFTP、SMTP......传输层:TCP、UDP网络层:ARP,IP,ICMP数据链路层:PPP,HDLC,ATM........物理层:V.35......3.IP特点IP是无连接的,无序的,不可靠的,提供尽力而为的服务。
《TCPIP详解》学习笔记
一.第三章:《IP,网际协议》问题一:如何理解IP的不可靠和无连接。
不可靠:指的是不能保证数据报能成功地到达目的地。
发生错误时候,丢弃该数据包,发送ICMP消息给信源端。
可靠性由上层提供。
无连接:IP不维护关于后续数据报的状态信息。
体现在,IP数据可以不按顺序发送和接收。
A发送连续的数据报,到达B不一定是连续的,来回路由选择可能不一样,路线也不一样,到达先后顺序也不一样。
问题二:IP报文的格式和各个字段的含义。
版本号:IPV4就是4,IPV6就是6 (4)首部长度:4个字节为单位。
最小为5,最大为15。
所以最小长度20个字节,最大为60个字节。
(4)服务类型:Qos用,目前不怎么使用。
(8)总长度:字节为单位。
最多可以传送65535字节的IP数据包。
(16)标识字段(8)标志(3)段偏移(5)与分片有关。
TTL:经过一个路由器减一。
字段为0时,数据报被丢弃,并且发送ICMP报文通知源主机。
目的是防止数据报在选路时无休止地在网络中流动。
(8)协议字段:区分上层协议(8)首部校验和:对首部进行校验。
(16)对比:ICMP,IGMP,TCP,UDP:对首部和数据进行校验。
源地址:(32)目的地址:(32)问题三:为什么IP首部中要有总长度字段?因为一些数据链路(以太网)需要填充一些数据以达到最小长度。
因为以太网帧的最小长度是46个字节,但是IP长度可能更短,所以需要总长度来确定IP数据部分的内容。
?问题四:几个TTL值以及其特殊作用?TTL=0:数据报被丢弃,并发送ICMP报文通知源主机。
TTL=1:TTL=255:问题五:IP首部校验和怎么计算的,与ICMP,IGMP,TCP,UDP的首部校验和有什么区别与共同点?(1)把校验和字段臵0。
(2)对首部中每个16位比特进行二进制反码求和。
(3)结果存在检验和字段中。
(4)收到一份IP数据包后,同样对首部中每个16bit二进制反码求和。
(5)最后结果全为1,表示正确,否则表示错误。
TCP IP详解学习笔记(3)IP协议ARP协议RARP协议 电脑资料
TCP IP详解学习笔记(3)IP协议ARP协议RARP协议电脑资料把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ether网卡Mac地址,IP那么承载要发送的,IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。
要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。
所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。
这是后话,暂且不提如下图现在的ip版本号是4,所以也称作IPv4。
现在还有IPv6,而且运用也越来越广泛了。
当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个适宜的路径来"送货"的呢?最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。
至于是怎么直接传递的,这就要靠ARP协议了,后面会讲到。
稍微一般一点的情况是,主机通过假设干个路由器(router)和目的主机连接。
那么路由器就要通过ip包的信息来为ip包寻找到一个适宜的目标来进展传递,比方适宜的主机,或者适宜的路由。
路由器或者主机将会用如下的方式来处理某一个IP数据包这再一次了,ip包是不可靠的。
因为它不保证送达。
还记得数据链路层的以太网的协议中,每一个数据包都有一个MAC 地址头么?我们知道每一块以太网卡都有一个MAC地址,这个地址是唯一的,那么IP包是如何知道这个MAC地址的?这就是ARP协议的工作。
ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存),如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议播送包,这个播送包里面就有待查询的IP地址,而直接收到这份播送的包的所有主机都会查询自己的IP地址,如果收到播送包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP播送的主机,而播送主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。
TCPIP详解学习笔记(11-13)
TCP/IP 详解学习笔记(11)-TCP 交互数据流,成块数据流目前建立在TCP 协议上的网络协议特别多,有telnet ,ssh ,有ftp,有http 等等。
这些协议又可以根据数据吞吐量来大致分成两大类:(1) 交互数据类型,例如telnet ,ssh ,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一下键盘,回显一些文字等等。
(2) 数据成块类型,例如ftp,这种类型的协议要求TCP 能尽量的运载数据,把数据的吞吐量做到最大,并尽可能的提高效率。
针对这两种情况,TCP 给出了两种不同的策略来进行数据传输。
1.TCP 的交互数据流对于交互性要求比较高的应用,TCP 给出两个策略来提高发送效率和减低网络负担:(1)捎带ACK 。
(2)Nagle 算法(一次尽量多的发数据)。
通常,在网络速度很快的情况下,比如用lo 接口进行telnet 通信,当按下字母键并要求回显的时候,客户端和服务器将经历发送按键数据->服务器发送按键数据的ack -> 服务器端发送回显数据-> 客户端发送回显数据的ACK 的过程,而其中的数据流量将是40bit + 41bit+41bit+40bit = 162bit ,如果在广域网里面,这种小分组的TCP 流量将会造成很大的网络负担。
1.1.捎带ACK 的发送方式这个策略是说,当主机收到远程主机的TCP 数据报之后,通常不马上发送ACK 数据报,而是等上一个短暂的时间,如果这段时间里面主机还有发送到远程主机的TCP 数据报,那么就把这个ACK 数据报“捎带”着发送出去,把本来两个TCP 数据报整合成一个发送。
一般的,这个时间是200ms 。
可以明显地看到这个策略可以把TCP 数据报的利用率提高很多。
1.2.Nagle 算法上过bbs 的人应该都会有感受,就是在网络慢的时候发贴,有时键入一串字符串以后,经过一段时间,客户端“发疯”一样突然回显出很多内容,就好像数据一下子传过来了一样,这就是Nagle 算法的作用。
TCPIP笔记
对应的端口号
ftp服务器的tcp端口号是21,
telnet服务器的tcp端口号是23,
tftp服务器的UDP端口号是69,
知名的端口号范围是1~1023,
大多数TCP/IP实现给临时端口分配1024~5000之间的端口号,
大于5000的端口号是为其他服务器预留的(Internet上并不常用的服务),
小结:在一个互联网上,每个接口都用I P地址来标识,域名系统为主机名和I P地址之间提供动态的映射,端口号用来标识互相通信的应用程序。服务器使用知名端口号,而客户使用临时设定的端口号。
网络接口层:根据以太网首部中的帧的类型进行分用;首部中用16bit区别,区别ARP、IP、RARP;
数据链路层:根据ip首部中的协议值进行分用;首部中用8bit区别,主要区别ICMP、IGMP、TCP、UDP协议;1表示为ICMP协议, 2表示为IGMP协议, 6表示为TCP协议, 17表示为UDP协议。
TCPIP学习笔记
4 位版本
8 位服务类型 8 位协议
16 位总长度(字节数) 3 位标志 13 位片偏移 16 位首部检验和
16 位标识 8 位 TTL 32 位源 IP 地址 32 位目的 IP 地址
IP 首部定义:
typedef struct ip_hdr { unsigned char ip_verlen; // 4-bit 版本号 // 4-bit 首部长度 (in 32-bit words) unsigned char ip_tos; // IP 服务类型 unsigned short ip_totallength; // 总长度(字节数)
六、 链路层 :(以以太网为例,地址为 48bit)
1、 链路层的功能: ◆ 为 IP 模块发送和接收 IP 数据报 ◆ 为 ARP 模块发送 ARP 请求和接收 ARP 应答 ◆ 为 RARP 模块发送 RARP 请求和接收 RARP 应答 2、 以太网的封装,以太网 IP 数据报的封装在 RFC 894 中定义的:
说明:ip_verlen 前 4 位目前为 4,表示为 IPv4,后 4 位为 5,表示首部长度为 5X4=20 个字节。 ip_tos 为服务类型(type of service),aaabbbbc,aaa 为优先权子字段,现在已被忽略,bbbb 为 TOS 子字段,代表:最 小时延、最大吞吐量、最高可靠性和最小费用,c 未使用必须为 0。如果 bbbb 均为 0,则表示为一般服务。目前大多数 TCP/IP 实现都不支持 TOS 特性。 ip_totallength 为 IP 数据报的总长度,以字节为单位,因此理论最大值为 65535,但实际是不可能的。 ip_id 为唯一标识主机发送的每一个数据报,通常每发一份它的值就会加 1。 ip_off 前 3 位标志 abc,a 为保留,必须为 0,b 为不分片标志,c 为更多分片标志。 ip_off 后 13 位为分片位置,以 8 字节为单位计算。因此,除最后一个分片外,其他每个分片都希望是一个 8 字节倍数的
TCPIP协议详解笔记
,由下而上分别为网络接口层、网络层、传输层、应用层,如图1-17另外,为使广播量最小,ARP维护IP地址到媒体访问控制地址映射的缓存以便将来使用。
ARP缓存可以包含动态和静态项目。
动态项目随时间推移自动添加和删除。
静态项目一直保留在缓存中,直到重新启动计算机为止。
每个动态ARP缓存项的潜在生命周期是10分钟。
新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP 缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。
在工作站PC的Windows环境中,可以使用命令“arp-a”查看当前的ARP缓存,如图1-19所示。
在路由器和交换机中可以用show arp完成相同的功能。
下面举个例子:ARP和RARP协议的工作原理。
两个位于同一个物理网络上运行TCP/IP的主机,如图1-20所示,主机A和主机B。
主机A分配的IP地址是192.168.1.1,主机B分配的IP地址是192.168.1.2。
图1-19 查看ARP缓存图1-20 ARP工作原理解析当主机A要与主机B通信时,以下步骤可以将主机B软件指定的地址(192.168.1.2)解析成主机B硬件指定的媒体访问控制地址。
第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。
然后A主机在自己的本地ARP缓存中检查主机B的匹配硬件地址。
第2步:如果主机A在缓存中没有找到映射,它将询问“192.168.1.2的硬件地址是什么?”从而将ARP请求帧广播到本地网络上的所有主机。
源主机A的硬件和软件地址都包括在ARP请求中。
本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。
如果主机未找到匹配值,它将丢弃ARP 请求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TCP/IP详解学习笔记(1)-基本概念为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。
就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。
计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。
只有把它们联合起来,电脑才会发挥出它最大的潜力。
于是人们就想方设法的用电线把电脑连接到了一起。
但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。
因而他们需要定义一些共通的东西来进行交流,TCP/IP 就是为此而生。
TCP/IP不是一个协议,而是一个协议族的统称。
里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。
电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。
TCP/IP协议分层提到协议分层,我们很容易联想到ISO-OSI的七层协议经典架构,但是TCP/IP协议族的结构则稍有不同。
如图所示TCP/IP协议族按照层次由上到下,层层包装。
最上面的就是应用层了,这里面有http,ftp,等等我们熟悉的协议。
而第二层则是传输层,著名的TCP和UDP协议就在这个层次(不要告诉我你没用过udp玩星际)。
第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据(后面会讲到)以确定传输的目标。
第四层是叫数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。
再往下则是硬件层次了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等(这些我们就不用关心了,我们也不做网卡),所以有些书并不把这个层次放在tcp/ip协议族里面,因为它几乎和tcp/ip 协议的编写者没有任何的关系。
发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。
这种结构非常有栈的味道,所以某些文章也把tcp/ip协议族称为tcp/ip协议栈。
一些基本的常识在学习协议之前,我们应该具备一些基本知识。
互联网地址(ip地址)网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。
现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4 标准,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。
IPv4标准上,地址被分为五类,我们常用的是B 类地址。
具体的分类请参考其他文档。
需要注意的是IP地址是网络号+主机号的组合,这非常重要。
域名系统域名系统是一个分布的数据库,它提供将主机名(就是网址啦)转换成IP地址的服务。
RFCRFC是什么?RFC就是tcp/ip协议的标准文档,在这里我们可以看到RFC那长长的定义列表,现在它一共有4000多个协议的定义,当然,我们所要学习的,也就是那么十几个协议而已。
端口号(port)注意,这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已。
应用编程接口现在常用的编程接口有socket和TLI。
而前面的有时候也叫做“Berkeley socket”,可见Berkeley对于网络的发展有多大的贡献。
TCP/IP详解学习笔记(2)-数据链路层数据链路层有三个目的:•为IP模块发送和接收IP数据报。
•为ARP模块发送ARP请求和接收ARP应答。
•为RARP发送RARP请求和接收RARP应答ip大家都听说过。
至于ARP和RARP,ARP叫做地址解析协议,是用IP地址换MAC地址的一种协议,而RARP则叫做逆地址解析协议,在tcp/ip协议的后面章节会介绍它们(在局域网里面用ARP协议可以很容易的搞瘫痪网络哦)数据链路层的协议还是很多的,有我们最常用的以太网(就是平时我们用的网卡)协议,也有不太常见的令牌环,还有FDDI,当然,还有国内现在相当普及的PPP协议(就是adsl宽带),以及一个loopback协议。
联系linux里面的ifconfig -a命令,这个命令通常会得到如下的结果其中,eth0就是以太网接口,而lo则是loopback接口。
这也说明这个主机在网络链路层上至少支持loopback协议和以太网协议。
以太网(Ether-net)的定是指数字设备公司(Digital Equipment Corp.)、英特尔公司(Intel Corp.)和Xerox公司在1982年联合公布的一个标准,这个标准里面使用了一种称作CSMA/CD的接入方法。
而IEEE802提供的标准集802.3(还有一部分定义到了802.2中)也提供了一个CSMA/CD的标准。
这两个标准稍有不同,TCP/IP协议对这种情况的处理方式如下:•以太网的IP数据报封装在RFC894中定义,而IEEE802网络的IP数据报封装在RFC1042中定义。
•一台主机一定要能发送和接收RFC894定义的数据报。
•一台主机可以接收RFC894和RFC1042的封装格式的混合数据报。
•一台主机也许能够发送RFC1042数据报。
如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是RFC 894分组。
可见,RFC1042在TCP/IP里面处于一个配角的地位。
这两种不同的数据报格式请参考教材。
ppp(点对点协议)是从SLIP的替代品。
他们都提供了一种低速接入的解决方案。
而每一种数据链路层协议,都有一个MTU(最大传输单元)定义,在这个定义下面,如果IP数据报过大,则要进行分片(fragmentation),使得每片都小于MTU,注意PPP的MTU并不是一个物理定义,而是指一个逻辑定义(个人认为就是用程序控制)。
可以用netstat来打印出MTU的结果,比如键入netstat -in1500 0 1774 0 0 0 587 0 016436 0 2667 0 0 0 2667 0 0就可以观察到eth0的MTU是1500。
而lo(环回接口)的MTU则是16436。
最后说说那个环回接口(loopback)。
平时我们用127.0.0.1来尝试自己的机器服务器好使不好使。
走的就是这个loopback接口。
对于环回接口,有如下三点值得注意:•传给环回地址(一般是127.0.0.1)的任何数据均作为I P输入。
•传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。
这是因为广播传送和多播传送的定义包含主机本身。
•任何传给该主机IP地址的数据均送到环回接口。
这一章还是很简单的,一般作为了解知识也就足够了,没必要抠的那么详细。
TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息。
数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息。
1.IP协议IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。
要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。
所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。
这是后话,暂且不提1.1.IP协议头如图所示挨个解释它是教科书的活计,我感兴趣的只是那八位的TTL字段,还记得这个字段是做什么的么?这个字段规定该数据包在穿过多少个路由之后才会被抛弃 (这里就体现出来IP协议包的不可靠性,它不保证数据被送达),某个ip数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。
这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64,Tracerouter这个工具就是用这个原理工作的,tranceroute的-m选项要求最大值是255,也就是因为这个 TTL在IP协议里面只有8bit。
现在的ip版本号是4,所以也称作IPv4。
现在还有IPv6,而且运用也越来越广泛了。
1.2.IP路由选择当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来"送货"的呢?最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。
至于是怎么直接传递的,这就要靠ARP协议了,后面会讲到。
稍微一般一点的情况是,主机通过若干个路由器(router)和目的主机连接。
那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。
路由器或者主机将会用如下的方式来处理某一个IP数据包1如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。
2搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机3搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助。
如果找到路由器,则将该包发向路由器。
4搜索路由表,如果匹配同子网路由器失败,则匹配同网号(第一章有讲解)路由器,如果找到路由器,则将该包发向路由器。
5搜索陆游表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包6如果都失败了,就丢掉这个包。
这再一次证明了,ip包是不可靠的。
因为它不保证送达。
1.3.子网寻址IP地址的定义是网络号+主机号。
但是现在所有的主机都要求子网编址,也就是说,把主机号在细分成子网号+主机号。
最终一个IP地址就成为网络号码+子网号+主机号。
例如一个B类地址:210.30.109.134。
一般情况下,这个IP地址的红色部分就是网络号,而蓝色部分就是子网号,绿色部分就是主机号。
至于有多少位代表子网号这个问题上,这没有一个硬性的规定,取而代之的则是子网掩码,校园网相信大多数人都用过,在校园网的设定里面有一个255.255.255.0的东西,这就是子网掩码。
子网掩码是由32bit的二进制数字序列,形式为是一连串的1和一连串的0,例如:255.255.255.0(二进制就是11111111.11111111.11111111.00000000) 对于刚才的那个B类地址,因为210.30是网络号,那么后面的109.134就是子网号和主机号的组合,又因为子网掩码只有后八bit为0,所以主机号就是IP地址的后八个bit,就是134,而剩下的就是子网号码--109。