TCP/IP

一  协议栈

TCP/IP协议栈主要分为四层 应用层 传输层 网络层 链路层 

 

 

TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地。出栈的过程,数据接收方每层不断地拆除首部与尾部,得到最终传输的数据。(我是谁,我从哪来,我要到哪里去)

 

二、数据链路层

物理层:负责0、1比特流与物理设备电压高低、光的闪灭之间的互换。

数据链路层:负责将0、1序列划分为数据帧从一个节点传输到临近的另一个节点,这些节点是通过MAC来唯一标识的(MAC,物理地址,一个主机会有一个MAC地址)。

  • 封装成帧:把网络层数据报加头和尾,封装成帧,帧头包含源MAC地址和目的MAC地址
  • 透明传输:零比特填充、转义字符。
  • 可靠传输: 在出错率很低的链路上很少用,但是无线链路WLAN会保证可靠传输。
  • 差错检测(CRC):接收者检测错误,如果发现差错,丢弃该帧。

三、网络层

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGMP的数据都以IP数据格式传输。

要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP或UDP要做的事情。

1  ICMP协议
IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。ICMP不是高层协议,而是IP层的协议。

当传送IP数据包发生错误。比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这
也就是为什么说建立在IP层以上的协议是可能做到安全的原因。

2.ARP及RARP协议
ARP 是根据IP地址获取MAC地址的一种协议

ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-
MAC地址对应表缓存)。

如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机。

而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-
MAC对应表的地方)。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。

RARP协议的工作与此相反,不做赘述。

四、ping

ping可以说是ICMP的最著名的应用,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。

例如:当我们某一个网站上不去的时候。通常会ping一下这个网站。ping会回显出一些有用的信息

ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请
求,受到请求的主机则用类型码为8的ICMP回应。

ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。我们可以看到, ping给出来了传送的时间和TTL的数据。

五、Traceroute

Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。

Traceroute的原理是非常非常的有意思,它收到到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生
一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据
报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器IP。

六、TCP/UDP

所谓协议 就是双方进行数据传输的一种格式 。

而TCP和UDP是TCP/IP协议中的两个传输层协议,他们使用IP路由功能将数据包发送到目的地,从而为应用程序( 应用层协议 包括:http ,ftp, telnet,smtp)提供网路服务。

 TCPUDP
可靠性可靠不可靠
连接性面向连接无连接
报文面向字节流面向报文
效率传输效率低效率高
双工性全双工一对一,一对多,多对一,多对多
流量控制滑动窗口
传输速度
应用场景当数据传输必须保证数据的完整性、可控性和可靠性时,对效率要求低, TCP协议是最好的选择对效率要求高,对准确性要求低
   

全双工传输
英文写法是:Full-Duplex Transmissions
是指交换机du在发送数据的同zhi时也能够接收数dao据,两者同步进行,zhuan这好像我们平时shu打电话一样,说话的同时也能够听到对方的声音。目前的交换机都支持全双工。
全双工的好处在于迟延小,速度快。
与之对应的是【半双工】这个概念:就是指一个时间段内只有一个动作发生,举个简单例子,一天窄窄的马路,同时只能有一辆车通过,当目前有两量车对开,这种情况下就只能一辆先过,等到头儿后另一辆再开,这个例子就形象的说明了半双工的原理。早期的对讲机、以及早期集线器等设备都是实行半双工的产品。

面向报文
面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。

面向字节流
面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。

关于拥塞控制,流量控制,是TCP的重点,后面讲解。

 

 

为什么要三次握手?
为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

具体例子:“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”

 

TCP(Transmission Control Protocol,传输控制协议

  1. 是基于连接的协议 ,即,在正式收发数据之前,必须以对方建立可靠的连接。一个TCP连接必须要经过三次握手才能建立,而断开连接需要进行四次握手。
  2. 面向字节流,会把从上层传输下来的数据当做是无结构的字节流。
  3. 一对一通信。
  4. TCP在IP协议的基础之上添加了序号机制,确认机制,超时重传机制,数据校验,从而保证传输的可靠性,同时保证不出现丢失或者是乱序。

UDP(user data protocol ,用户数据协议) 是与TCP相对应的协议。他是面向非连接的协议,他不与对方建立连接,而是直接把数据包发送过去。UDP适用于一次只传输少量数据,对可靠性要求不高的应用环境。

  1. 一方向另一方发送数据不需要建立连接。相当于发短信,别人是否收到,短信信息是否丢失都不能知道。
  2. 面向报文的,从上层接收的数据如果报文不大于传输限制,则直接加上首部传输,如果报文过大,则进行IP分片后,再分别加入首部进行传输。
  3. UDP协议可以一对一通信,同时可以一对多通信。
  4. UDP仅仅是尽最大的努力进行交付,只是做比较初级的检查,比如端头检查,差错检测,往往在传输过程中会出现分组丢失、乱序、重复传输等问题。

 

 

相关应用:

当数据传输必须保证数据的完整性、可控性和可靠性时,TCP协议是最好的选择。

腾讯QQ中,TCP和UDP都有使用,但是以UDP为主,因为UDP传输速度快,在中国,网络环境复杂,不容易建立TCP连接,当登录QQ,发消息聊天都是UDP的,只有对方不在线或者隐身时,所发送的消息是TCP的。当双方在线时,直接对话,传送UDP,UDP协议头中包含对方的IP地址,这也是有些功能版QQ能显示对方IP的原因。而TCP协议,如果对方隐身,你通过TCP建立和腾讯服务器的连接,把消息存在服务器上,再由服务器选择合适时机传送给对方。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值