TCP/IP协议详解卷1 笔记(一)

  • TCP/IP协议存在的意义
  • TCP/IP基本常识
  • 链路层
  • IP层

- TCP/IP协议存在的意义

计算机可能采用各种不同的操作系统,就像拥有着不通的语言,不能互相沟通。此时,TCP/IP协议簇应运而生(TCP/IP协议簇不是单单指TCP、IP协议,而是多层次多协议的集合),计算机通过使用共同的一组标准来实现通信。就像让计算机都学习一门共同的语言。

- TCP/IP基本常识

网络协议一般分成不同的层次,每一层负责不同的通信功能。

1、链路层(OS中设备驱动器+NIC)处理物理接口细节

2、网络层 处理数据分组在网络中的路由

3、运输层 为两台主机的应用程序提供端到端的通信

TCP: 可靠,超时重传,可以将应用程序提交的数据分成合适的小块交给网络层,确认收到分组或设置发送最后确认分组超时时钟等

UDP: 不可靠,不确保数据报一定到达另一端

4、应用层

TCP segment、IP datagram、Frame

以太网数据帧的长度必须在46~1500字节之间(不包括CRC,目的,源等)。

TCP报文段含有一个标志应用程序的16bits端口符。

分用:根据标识符确定接收数据的上层协议。

端口号(一般都是奇数):

1~1023知名端口(服务器)

1024~5000临时端口(客户端端口,确保是本机唯一就可以了)




APP-KERNEL-NETWORK

例:


链路层的协议有很多,如以太网(就是我们平时使用的网卡),令牌网,FDDI,PPP(ASDL)以及loopback协议等。路由器为不同的物理网络提供连接。

例:


IP地址,32bits。


DNS,域名系统。是一个分布的数据库,由它来提供IP地址和主机名之间的映射信息。

- 链路层

串行通信:一条数据线,将数据一位一位的依次传送

1.同步通信

接收方和发送方必须时间同步

2.异步通信

顾名思义,不需要时间(发送接收)同步,接收方根据电压来判断是否有数据发送

并行通信:数据可以在多条数据线上传送


链路层目的:

1.封装IP报文

2.为ARP/RARP模块发送或者接收请求


LLC为上次提供服务。

MAC下层负责数据帧的封装,卸载,检错,寻址等


采用的信道:

1. 点对点(PPP)

2. 广播(以太网)


- 封装成帧(帧起始符,结束符,MAC帧无结束符,因为两个帧间隔9.6us,而且只要少于64字节就丢弃,而PPP帧连续发送,需要结束符判断是否结束一个帧)

- SOH,EOT出现在数据中,则要用转义字符

- FCS


帧最小64字节,最小帧保证NIC有足够的时间精确检测冲突。这一最小时间根据网络最大电缆长度和帧沿电缆传播速度决定(如果节点收到冲突信号时,数据已经全部发送至链路或者对方,则不重传。最远两台机器之间的round-trip time要小于512bits的时间,512bits/8=64Byte),如果发送的帧小于64就必须填充,但是不算入数据字段长度。


以太网Ethernet: 主要的局域网技术,使用CSMA/CD的媒体接入方法,速率是10Mb/s,MAC硬件地址是48bits。

CSMA/CD: 在发数据前一个节点需要监听网线上的载波,如果9.6us(96比特时间,其目的是使刚刚收到数据帧的节点的接收缓存来得及清理,为下一个接收做准备)之内没有检测到载波,节点就可以发送一帧数据。如果两个节点同时检测到空闲同时发送,检测到冲突的节点会发送“冲突增强(32位1)”信号给介质上的每个介质。冲突的节点需要等待一段随机时间再发送。但是802.3标准规定MTU(38~1492)的帧格式与Ethernet V2(目前互联网大部分采用,46~1500)有稍微不同。无论何种以太帧开始出都有64bits前导序列,前7个字节同步码,最后一个帧起始符。同时支持以太网和IEEE802.3帧的网络接口卡会根据长度区分。


Ethernet V2:

目的MAC+源MAC+长度+类型+CRC(6+6+2+46~1500+4)


PPP:点对点

在串行链路上封装IP数据报的方法(支持面向比特的同步,支持8位数据和无奇偶检验的异步)

LCP:允许通信双方进行协商(配置,控制数据链路的链路控制协议)

NCP:网络层协商


转义字符是0x7D.

1、同步传输:零字节填充,连续5个1加0。这样就不会出现0x7E,接收端收到5个1就删除后面的1

2、异步传输:

0x7E用0x7D,0x5E表示

0x7D用0x7D,0x5D表示

如果有控制字符,则前面加0x7D,后面也要做相应的改变


PPPoE:

现在用户牵宽带,自己在家里组局域网,几台电脑一起共享宽带。所以,PPP帧也需要装到以太网MAC帧中。


环回接口:允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。127网段的IP地址被预留给环回接口,一般使用127.0.0.1,被称为localhost。一个传给环回接口的IP数据报不能再任何网络上出现。当IP数据报离开网络层及时把它返回给自己,传给广播地址或多播地址也要传一份给自己,传给主机IP的报文都要传给自己(都是考虑自己发出去的包)。


IP如果比MTU大则要分片,还要另一个概念路径MTU,因为一个数据报可以通过多个网络类型(不同网络对MTU要求不同),这时就取决于路径中最小的MTU要求。MTU两个方向上(发,回)不一定是一致的。


串行线路吞吐量:

例,线路速率9600b/s,一个字节8bit,加上一个起始比特和一个停止比特,那么线路的速率就是960B/s,那么速率传送一个1024字节分组需要1066ms.


ARP: IP->MAC地址

高速缓存(一般20分钟过期,除了绑定的情况下)

例:A->B(192.168.85.100)

查询ARP缓存,如果没有,A发一个ARP广播请求,目的MAC为FF-FF-FF-FF-FF-FF,目的IP为192.168.85.100,加上自己的源IP和源MAC。同一网段内的所有计算机都会收到这个广播,如果IP和自己不一样,则舍弃,一样,更新自己的高速缓存(记下A的IP和MAC),并且单独回复一个ARP应答给A(将源MAC,IP变为目的MAC,IP,源MAC,IP换为自己的MAC,IP),A更新自己的缓存。

arp -a


- IP层

ping 127.0.0.1和ping 主机ip的不同?

前者测试服务器(TCP/IP协议安装)是否正常,后者测试网卡是否正常。

为什么有些环回接口MTU为什么是1536?

http://www.docin.com/p-316650273.html

拓展:

http://blog.sina.com.cn/s/blog_46d93f190100ojap.html

IP层是不可靠,无连接,无顺序的。

A->B,若B路由器的缓存区用完了,IP的处理方式是发送ICMP给A,然后由上层如TCP来完成可靠性,IP的无连接是指它不维护任何关于后续数据报的状态信息,每个数据报的处理都是相互独立的。


普通IP首部是20字节(除非有选项字段):


首部长度4个字节,所以首部最大为60个字节(2^4-1)*8,TOS表示服务类型(如最小时延,最大吞吐,最高可靠性和最小费用,只能置其中一个服务,全为0时,是一般服务)。总长度是数据长度(最大2^16-1),是必要字段,因为帧会填充。一般主机要求不超过576字节,所以有赖TCP分割数据。标识字段用来标识主机发送的每一个报文。TTL(time-to-live)规定了数据报最多可以经历过多少路由器(最多255,默认32或64),当值为0,舍弃报文,并发送ICMP报文通知源主机。协议标示哪个协议向IP发数据。检验和是根据IP首部计算的检验字段(先把检验字段设为0,对首部每16位进行反码,再求和,接收方收到数据包时,根据首部计算检验和,如果没有错误,结果和检验和相加是全1,如果不是,丢弃,并不常上错误报告,由上层负责重传)。因为路由过程中TTL不断减1,所以只需要在检验和加1就好了,不需要对IP整个首部进行重新进行。


任选项(可变长):


big endian(网络字节序):0~31bit(0~7,8~15,16~23,24~31),以little endian格式存储额要转换成网络字节序。


IP路由:

1.如果TTL是0,丢弃包

2.搜索路由表,优先搜索匹配主机

3.搜索路由表,匹配子网

4.搜索路由表,匹配网号

5.以上都不是,发给默认路由表


6.同一网络,建立缓存表(查缓存表),数据报被送往以太网驱动程序


上面都失败了,就丢弃这个包,并产生ICMP错误包。


IP层的内存中有一个路由表,收到一份数据报,搜索该表。

路由表:

-目的IP地址

-下一站

- 标志(表明目的或者下一站是路由器还是直接接口)


HOP-BY-HOP

子网寻址:

网络地址不够用(比如A类只有2^24-2),子网应运而生,而且可以缩短路由表的规模(因为外网看不到子网的不同,而子网对于子网内部的路由器是不透明的)。

例:(254主机)


子网掩码用来区分子完好和主机号。


广播地址全1的情况下,路由不转发,只在本地网段广播。

变成子网:增加不同网络(RIP不支持变长子网)


netstat: 提供系统上接口信息(如接口MTU,输入分组数,输入错误,输出分组和错误等)。


主机也有路由表:

http://wenku.baidu.com/view/6ae5e62a2af90242a895e5f6.html

















  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值