网络编程之TCP/IP基础


网络编程之TCP/IP基础
 
一、ISO/OSI参考模型
1、  OSI(open system interconnection)开放系统互联模型是由ISO(InternationalOrganization for Standardization)国际标准化组织定义的网络分层模型,共七层。
2、
q  物理层(PhysicalLayer):物理层定义了所有电子及物理设备的规范,为上层的传输提供了一个物理介质,本层中数据传输的单位为比特(bit)。属于本层定义的规范有EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等,实际使用中的设备如网卡等属于本层。
 
q  数据链路层(DataLink Layer):对物理层收到的比特流进行数据成帧。提供可靠的数据传输服务,实现无差错数据传输。在数据链路层中数据的单位为帧(frame)。属于本层定义的规范有SDLC、HDLC、PPP、STP、帧中继等,实际使用中的设备如switch交换机属于本层。
q  网络层(NetworkLayer):网络层负责将各个子网之间的数据进行路由选择,分组与重组。本层中数据传输的单位为数据包(packet)。属于本层定义的规范有IP、IPX、RIP、OSPF、ICMP、IGMP等。实际使用中的设备如路由器属于本层。
 
q  传输层(TransportLayer):提供可靠的数据传输服务,它检测路由器丢弃的包,然后产生一个重传请求,能够将乱序收到的数据包重新排序。
q  会话层(SessionLayer):管理主机之间会话过程,包括会话建立、终止和会话过程中的管理。
q  表示层(PresentationLayer):表示层对网络传输的数据进行变换,使得多个主机之间传送的信息能够互相理解,包括数据的压缩、加密、格式转换等。
q  应用层(ApplicationLayer):应用层与应用程序界面沟通,以达至展示给用户的目的。在此常见的协定有: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等
二、TCP/IP四层模型
 
对等通信
封装
分用
端口
q  众所周知端口(WellKnown Ports):从0到1023,这些端口由IANA分配和控制它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:21端口为ftp服务端口。
q  注册端口(RegisteredPorts):从1024到49151。它些端口不受IANA控制,但由IANA登记并提供使用情况清单。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:1433 Microsoft SQL服务端口
q  动态或私有端口(Dynamicor Private Ports):从49152到65535。IANA不管这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
02TCP/IP基础(二)
一、MTU
以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit)
如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就要进行分片(Fragmentation),把数据报分成若干片,这样每一片都小于MTU。
当网络上的两台主机互相进行通信时,两台主机之间要经过多个网络,每个网络的链路层可能有不同的MTU,其中两台通信主机路径中的最小MTU被称作路径MTU。
二、以太网帧格式
 
三、ICMP
四、ARP
五、数据在网络中传输过程
 
步骤a:应用程序ping会判断发送的是主机名还是IP地址,调用函数gethostbyname()解析主机机B,将主机名转换成一个32位的IP地址。这个过程叫做DNS域名解析
步骤b:ping程序向目的IP地址发送一个ICMP的ECHO包
步骤c:将目标主机的IP地址转换为48位硬件地址,在局域网内发送ARP请求广播,查找主机B的硬件地址。
步骤d:主机B的ARP协议层接收到主机A的ARP请求后,将本机的硬件地址填充到应答包,发送ARP应答到主机A。
步骤e:发送ICMP数据包到主机B
步骤f:主机B接收到主机A的ICMP包,发送响应包。
步骤g:主机A接收到主机B的ICMP包响应包。
六、RARP
 
03TCP/IP基础(三)
一、IP数据报格式
1.        版本
a)        IP协议版本号,长度为4位,IPv4此字段值为4,IPv6此字段值为6
2.        首部长度
a)        以32位的字为单位,该字段长度为4位,最大值为15,所以首部长度最大为60个字节
3.        服务类型(TOS)
a)        长度为8位。此字段包含3位的优先权(现已忽略),4位的服务类型子字段和1位的保留位(必须置0)。4位的服务类型分别为最小延迟(D)、最大吞吐量(T)、最高可靠性(R)、最小费用(F)。
4.        
5.        总长度
a)        该字段长度为16位,以字节为单位,该字段长度包含IP的头部和数据部分。IP数据报最大可达65535个字节。
6.        标识
a)        16位标识,用来标识一个IP包,每发送一个此值会加1
7.        标志与片偏移
a)        3位标志其中第一位不使用, 每二位DF(Don’tFragment),该位如果为1,如果传输的数据报超过最大传输单元,该数据报会被丢弃,并发送一个ICMP差错报文。第三位MF(More Fragment)表示是否有更多的片,该位为1,说明后续有分片。最后一片MF为0。
b)        IP分片后每一个分组都具有自己的首部,但是片偏移值不同,通过片偏移值接收端可以重新组装IP包。
8.        TTL
a)        TTL(Time To Live)表示数据报最多可经过的路由器的数量。数据报每经过一个路由器,TTL减1,减为0时丢弃,并发送ICMP报文通知源主机。TTL可以避免数据报在路由器之间不断循环。
9.        协议类型
a)        表示IP层上承载的是哪个高级协议。在封装与分用的过程中,协议栈知道该交给哪个层的协议处理。1 ICMP 2 IGMP 6 TCP 17 UDP
10.    头部校验和
a)        保证数据报头部的数据完整性,但校验不包括数据部分。这样做的目的有二:一是所有将数据封装在IP数据包中的高层协议均含有覆盖整个数据的校验和,因此IP数据报没有必要再对其所承载的数据部分进行校验。二是每经过一个路由器,IP数据报的头部要发生改变,而数据部分不变,这样只对发生改变的头部进行校验,显然不会浪费太多的时间。为了减少计算时间,一般不用CRC校验码,而是采用更简单的网际校验和。
11.    TTL
a)        TTL(Time To Live)表示数据报最多可经过的路由器的数量。数据报每经过一个路由器,TTL减1,减为0时丢弃,并发送ICMP报文通知源主机。TTL可以避免数据报在路由器之间不断循环。
12.    协议类型
a)        表示IP层上承载的是哪个高级协议。在封装与分用的过程中,协议栈知道该交给哪个层的协议处理。1 ICMP 2 IGMP 6 TCP 17 UDP
13.    头部校验和
a)        保证数据报头部的数据完整性,但校验不包括数据部分。这样做的目的有二:一是所有将数据封装在IP数据包中的高层协议均含有覆盖整个数据的校验和,因此IP数据报没有必要再对其所承载的数据部分进行校验。二是每经过一个路由器,IP数据报的头部要发生改变,而数据部分不变,这样只对发生改变的头部进行校验,显然不会浪费太多的时间。为了减少计算时间,一般不用CRC校验码,而是采用更简单的网际校验和。
14.    源IP地址
a)        发送数据的主机IP地址
15.    目的IP地址
a)        接收数据的主机IP地址
16.    选项与填充(选项为4字节整数倍,否则用0填充)
a)        安全和处理限制
b)        路径记录:记录所经历路由器的IP地址
c)        时间戳:记录所经历路由器的IP地址和时间
d)        宽松源站路由:指定数据报文必须经历的IP地址,可以经过没有指定的IP地址。
e)        严格的源站路由:指定数据报文必须经历的IP地址,不能经过没有指定的IP地址。
二、网际校验和
网际校验和,英文全称(Internet Checksum)
发送方对要发送的数据划分为许多16位字序列(如果数据的字节数为奇数,则在末尾补一字节0凑成偶数。)对这些序列反码求和,便得到校验和。
如果数据在传输过程中没有发生任何差错,那么接收方计算校验和的结果应该为全1。如果结果不是全1(即校验和错误)。
三、路由
 
04TCP/IP基础(四)
 
一、TCP的特点  
基本于字节流
面向连接
可靠传输
缓冲传输
全双工
流量控制
二、TCP报文段格式
 
1.        源端口号与目的端口号
a)        源端口号和目的端口号,加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接。
2.        序号
a)        序号表示在这个报文段中的第一个数据字节序号。
3.        确认号
a)        仅当ACK标志为1时有效。确认号表示期望收到的下一个字节的序号。
4.        头部长度
a)        4位,TCP头部最多60个字节
5.        保留位
a)        6位,必须为0
6.        6个标志位
a)        URG-紧急指针有效
b)        ACK-确认序号有效
c)        PSH-接收方应尽快将这个报文段交给应用层
d)        RST-连接重置
e)        SYN-同步序号用来发起一个连接
f)         FIN-表示将要终止一个连接
7.        窗口大小
8.        通过窗口大小来达到流量控制。
9.        校验和
10.    对tcp头与数据进行校验
11.    紧急指针
a)        是一个正的偏移量,与序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。
12.    选项与填充(选项为4字节整数倍,否则用0填充)
a)        最常见的可选字段是最长报文大小MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段中指明这个选项。它指明本端所能接收的最大长度的报文段。该选项如果不设置,默认为536(20+20+536=576字节的IP数据报)
三、连接建立三次握手
四、连接终止四次握手
五、TCP如何保证可靠性
应用数据被分割成TCP认为最适合发送的数据块,称为段传递给IP层。
当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
TCP将保持它首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化。如果收到段的校验和有差错,TCP将丢弃这个报文段并且不确认(导致对方超时重传)
TCP承载于IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对收到的数据进行重新排序。
IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
TCP还能提供流量控制。TCP连接的每一方都有一定大小的缓冲空间。
 
05TCP/IP基础(五)
一、滑动窗口协议
通告接收窗口(rwnd):预防应用程序发送的数据超过对方的缓冲区。接收方使用的流量控制
拥塞窗口(cwnd):预防应用程序发送的数据超过网络所能承受的能力。发送方使用的流量控制
发送窗口取两者较小值
慢启动阀值(ssthresh:slow start threshold)
慢启动阶段:cwnd从1开始按指数增长直到ssthresh
拥塞避免阶段:cwnd按线性增长,直到拥塞,将cwnd=1,ssthresh减半。
 

相关内容

    暂无相关文章