tcpip协议

ぐ巨炮叔叔 提交于 2019-12-06 02:33:38

  几个概念

1.分层(我们使用四层模型更为贴合我们的实际网络)

分层是为什么,其实和公司中职位是一样的,不同职位的人做不同的事情,然后不同职位的人合起来,一起完成了数据传输的事情。

链路层  在这个层面,主机与主机的交互只认得硬件mac编号,并不认识IP。

网络层 IP   ICMP  IGMP

运输层 TCP  UDP

应用层 Telnet远程登陆,FTP文件传输协议(我们这个端口和那个端口的连接是用来干什么的,传输文件?那么可以使用FTP。传输文本?那么可以使用HTTP。应用层就是实际上对具体的程序之间的交互功能进行定义的层。)

 2.  接口 互联网上的每个接口必须有一个唯一的 I P地址

使用T C P / I P协议的应用程序通常采用两种应用编程接口( A P I):

s o c k e tT L I(运输层接口:Transport Layer Interface)。

3. 封装 T C P传给I P的数据单元称作 T C P报文段或简称为 T C P段(T C P s e g m e n t)。 

 I P传给网络接口层的数据单元称作 I P数据报(IP datagram)。通过以太网传输的比流称作帧(Fr a m e )

 

 

 IP:网络协议

一.基本概念

 

所有的 T C PU D PI C M PI G M P数据都以I P数据报格式传输。IP的就像给网络上每个机器一个门牌号,网络层,你可以把它理解为邮件运输工,它的职能就是负责把一包东西,从这个门牌运输到另外一个门牌。

 

不可靠(u n r e l i a b l e)的意思是它不能保证 I P数据报能成功地到达目的地。如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P有一个简单的错误处理算法:丢弃该数据报,然后发送 I C M P消息报给信源端。任何要求的可靠性必须由上层来提供(如T C P)。

 

无连接  I P数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是 A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此 B可能在A到达之前先到达。

. 多路访问协议:

 

a) ALOHA协议: 纯 ALOHA协议和 时隙 ALOHA协议

 

b) 载波侦听多路访问协议 (CSMA):1-坚持式 CSMA、⾮坚持式 CSMA、p-坚持式 CSMA、

 

  带有冲突检测的 CSMA(CSMA/CD)
  CSMA/CA(避免冲突的 CSMA 协议):发送⽅先激发 RTS短帧,接收⽅收到后发送 CTS短帧,使接收⽅周围的站点在发送期间保持沉默避免冲突

 

但同样存在面向连接的虚电路和无连接的数据包。

二.路由算法

对应网络上也存在自适应算法(动态路由,根据网络状态刷新路由表)和非自适应算法(静态路由,可靠)。

Dijkstra最短通路算法,距离矢量DistanceVector算法,链路状态算法

内部⽹关路由协议 ( IGP,也叫域内路由协议) :

 

a) 路由信息协议( RIP):基于距离⽮量算法,例如 Bellman-ford 算法

 

b) 开放最短路径优先协议( OSBF):基于链路状态算法,例如 Dijkstra 算法
 
三.网络接口

 

IPv4 头标格式 :

 

a) 版本号 : 4bit,IPv4 填 4            b) 头标⻓度 :4bit,单位为 4 字节,范围 5-15,缺省值为 5

 

c) 服务类型 (TOS):8bit ,0          d) 总⻓度 :16bit ,单位字节, 描述 IP 分组的总⻓, 包括头和数据, 最⼤ 65535 字节,

 

e) 标识符 : 16bit,⽤于唯⼀标识分组       f) 标志 :3bit ,第 1 位未定义,第 2 位 DF 为 0 表示可分段,第 3 位 MF 为 1 表示还有分段

 

g) 段偏移 : 13bit,单位为 8 字节 ,取值 0-8191  h) ⽣存期( TTL):8bit ,单位秒

 

i) 协议 :8bit ,表示⾼层协议类型        j) 分组头校验 :16bit ,每 16 位相加,进位加到结果,最后取反

 

k) 源 IP 地址 和⽬的 IP 地址 :各32bit
 

网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有三个协议:

地址解析协议 ARP(Address Resolution Protocol)

网际控制报文协议 ICMP (Internet Control Message Protocol)

网际组管理协议 IGMP (Internet Group Management Protocol)

 

 

 

 

TCP传输层

 

传输层相比于网络层最大的不同就是引入了端口的概念。网络层只管发送地址和目的地址。但是发送主机上有可能有多个程序和同一个接收主机进行传输数据,怎么区分这多个程序呢?就引入了端口的概念。

 

传输层还有一个职能是定义发送方和接收方基本处理包的行为。上面说到网络层就相当于邮件运输工,它只负责把一包东西从一个地方放到另外一个地方,但是,这包东西是否送达了,送达之后接收方又有什么行为。这些都可以在传输层进行定义。注意,这里说的是可以,你也可以在传输层布不管这些,只做简单的基本封装四元组。你懂的,我说的就是UDP。

⽤户数据包协议( UDP):不可靠,⾼效. 常用于实时视频数据传播。单元称为数据报
传输控制协议( TCP):传输的数据单元称为数据段
                                       数据流传输、可靠、全双⼯、流量控制、拥塞控制

 

 

 

 

 

 

包的序号,用来解决网络包乱序(reordering)问题。

Acknowledgement Number就是ACK——用于确认收到,用来解决不丢包的问题。

Window又叫Advertised-Window,也就是著名的滑动窗口(Sliding Window),用于解决流控的。

TCP Flag ,也就是包的类型,主要是用于操控TCP的状态机的。

i. 源端⼝ /⽬的端⼝ :各 16bit

 

ii. 序列号 /确认号 :各 32bit

 

iii. 头标⻓度 :4bit ,单位是 4 字节

 

iv. 保留 :6bit,置零

 

v. URG:1bit ,指示紧急指针有效

 

vi. ACK:1bit ,指示确认段有效

 

vii. PSH:1bit ,告诉主机⽴即将数据段递交给应⽤进程

 

viii. RST:1bit ,重新连接

 

ix. SYN:1bit ,同步序列号,⽤于确认连接

 

x. FIN:1bit ,⽤于释放连接

 

xi. 窗⼝⼤⼩ :16bit,⽤于流量控制,指示确认后还可发送的字节数

 

xii. 检验和 /紧急指针 :各16bit

 

 

 

 二、流量控制与滑动窗口

 

三、TCP建立连接和关闭的三次握手

 

client和server应该理解为发送方(客户端)和接收方(服务器)

建⽴连接:三步握⼿
a) 主机 1 向主机 2 发送序号 seq = x的连接请求 TPDU
b) 主机 2 答应连接请求, ack = x, seq = y
c) 主机 1 发送序列号 seq = x 的数据,并确认 ack = y
TCP协议的状态机

 

 

三. 拥塞阻塞 明明网络已经堵塞了,还一个劲地发送大量包,甚至重发,那么这个时候,大家都没得玩了。于是,TCP引入了拥塞窗口(cwnd)的概念。

流量控制:根据接收⽅的缓存容量来动态调整发送⽅的窗⼝⼤⼩,避免⼀个快速的发送⽅淹没⼀个慢速的接收⽅
拥塞控制:根据⽹络的承载容量来动态调整发送⽅的窗⼝⼤⼩,避免同⼀时刻发送⽅有太多的未被确认接收的
 算法:
慢启动在刚刚连接网络的时候,最好先慢慢检测网络情况,再确定发送包的数量。这就是我们说的慢启动算法。
   发送方从1个包开始,收到ACK,下次就发送2个包,收到这两个包的ACK(请注意,这里有可能只有一个ACK),下次就发送4个包。

“每收到一个ACK,拥塞窗口就增加一个报文段”。

当然上图的情况太理想,实际的情况,坑cwnd为2的请求发出去两个报文包的时候,先返回了一个ACK,然后cwnd这个时候就为3,发送方就会继续发送请求包。。。

 

 

 

 拥塞避免算法 

慢启动使得cwnd是呈指数增长。一定不可能是无限增长的,这里就有个阀值,超过这个阀值,就进入拥塞避免算法。

先说拥塞避免算法,拥塞避免算法说的是拥塞窗口的增加不再是“每收到一个ACK,拥塞窗口就增加一个报文段”。 而是“每收到一个ACK,cwnd = cwnd + 1/cwnd”。

 

 

快速回复算法

快速恢复算法是为了不要有一个重传就那么大响应。能尽快恢复到网络流畅时候稳定的状态。

 

其他

DNS域名查询类型 :

 

a) 递归查询 :每⼀个被请求的服务器如果没有记录, 就会向其它服务器查询, 并沿着

 

查询路径返回

 

b) 迭代查询 :本地服务器如果没有记录, 就向⾼级服务器查询, 被请求的服务器如果

 

没有记录就返回⼀个可供查询的服务器地址

 

FTP⽂件传输协议 :

 

a) 主动模式 :client 向 server 命令通道 21 端⼝, server 向 client 数据通道 20 端⼝

 

b) 被动模式 :client 向 server 命令通道 21 端⼝, client 向 server 数据通道> 1023

电⼦邮件相关协议 :
a) 消息交换的协议:
   i. 发送 email:简单邮件传输协议( SMTP)
   ii. 接收 email:
  1. 邮局协议第 3 版( POP3)
  2. Internet 消息访问协议( IMAP)
b) 消息格式的协议:
   i. RFC 822:基本的 ASCII的⽂本邮件
   ii. 多⽤途 Internet 邮件扩展( MIME )

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!