TCP/IP协议族
- TCP/IP协议族:以TCP,IP协议为核心的协议族。还包括其他各层协议。
应用层:http dns telnet ftp tftp
传输层:tcp udp
网络层:ip ICMP ARP rarp
数据链路层:ethnet ethnet2 802.3 ppp fr x.25 hdlc
物理层:比特流
tcp/ip 是一种网络分层模型 ,将网络分成5层,以上列出了每一层的经典协议。
分层的作用:封装不必要的内部信息,只对外提供必要的接口,简化操作。
,—
应用层 数据传输单位------>报文
运输层 数据传输单位------>报文段
网络层 数据传输单位------>分组 / 包
数据链路层 传输单位------>帧
TCP:面向/基于连接,可靠,传输。
UDP:不面向/不基于连接,不保证可靠,实时性强。
IP(核心):不基于连接,不保证可靠性。所以 packet 可能损坏。丢失。
当应用层传输文件时,使用FTP协议,要求可靠,所以在运输层必须使用TCP。
当传送话音或者视频点播信息时,优先保证实时性,则选择无连接的UDP。
-
IP 地址由四段组成,每段一个字节,每段最大值为255;一个 IP 地址大小为 4 B。
-
IP 地址由两部分组成,即网络地址和主机地址,二者是主从关系。IP地址 = 网络号+主机号
-
1、网络号 net-id,表示主机(或路由器)所连接到的网络,网络地址表示其属于互联网的哪一个网络。
-
2、主机号 host-id,它标志该主机(或路由器),主机地址表示其属于该网络中的哪一台主机。
-
-
IP地址的分类:A,B,C类;特殊地址 D,E; 全 0 和全 1 均保留不用。
IP地址 = 网络号+主机号
,—我司有一个C类IP。
- An orgznization can subdivide it’s host address space into groups called subnets.把主机地址再分组成子网。
,—
,—上图分为子网1,2…,每个子网内还有数个 host。
IP 由专门的国际组织来分配。IP 地址的 net-id 越短,那么 host-id 就越长,能容纳的主机越多。
-
子网掩码:也是32位,用来指明一个IP地址所标示的主机处于哪个子网中,就是将某个IP地址划分成网络地址和主机地址两部分。见收
-
数据发送的模式:
unicast----> one to one-------->support by Class A, B, C addresses
broadcast----> one to all------>supported by 255.255.255.255, eg
multicast----> one to many—>supported by Class D addresses -
DHCP
dynamtic host configuration protocal
动态地址分配。
,—
IP数据包
-
IP数据包的内容
- 源地址和目的地址
- 协议号:比如 TCP 是 6,UDP 是17。
- time 在to live:防止数据包 Packet 在一个死循环里面 死循环。每次经过一个节点计数器就1.如设置值为5,那么经过五次就自动丢包。
-
IP数据包的结构
,—
分成一段一段的数据传送的原因是 MTU (maximum transmission unit)的限制;链路层一次能传送的最大长度。
同一个 IP 包不同的分片它们的 ID 是一样的,ID就是用来 fragment 和 reassembly。但是 Fragment offset是不一样的(偏移)。
分成的每一段数据格式都是上面的 IP数据包格式;
若有其中一个包丢了,之前所有的包都被丢弃。sender会受到一个 ICMP message。(反正只要出错就像sender 发 ICMP message)
端口 PORT
用正整数来表示不同的端口,收到包后根据端口号传给上一层。IP是全球范围内的,而端口是在一个host内部的。只要通信的双方 host 的端口是统一的,那么就可以正常通信。
如20,21是FTP的端口号,DNS是53,TFTP是69。
DNS 域名系统
访问某个网站时,不用 ip,而是用它的域名。
DNS 把域名转行成 ip。
域名在因特网上用来代替 IP 地址,因为 IP 地址没有实际含义,人们不容易记住,所以用有含义的英文字母,小数点来代替。在网络上,专门有**DNS(域名服务器)**来进行域名←→IP 的相互转换,人们输入域名,在DNS上转换为IP,才能找到相应的服务器,打开相应的网页。
UDP数据报格式
,—
不是基于连接,不可靠
多用于实时应用
TCP transmission control control 传输控制协议
- 基于连接的,可靠的,全双工
- 若数据没能送达、顺序不对、重复,那么连接将被取消
- 有很大开销是用来保证数据正确传输,所以效率低。牺牲效率来保证传输安全。
- 基于连接:在数据传输之前,一定要先建立好一个虚拟的连接。
- 可靠的:任何一次数据传输都会由接收方来确认。所以不适合传输实时性数据。
可靠并不意味着数据一定不会出错,而是当发生错误时,能定位错误。
发送方发送完一次数据后如果没有在规定时间内收到握手消息,那么发送方会重发这次信息。
-
流的概念:每个分包编号,如 sender 发送了 10 次数据,若接收方发现第五个包未成功接收,只对第四个包 ack ,那么从第五个开始重发。
-
full duplex 全双工,tcp 允许数据在一个虚拟的连接上进行双向传输。
-
TCP implementation 有三次握手three - way handshake。要传输的数据被 OS 划分成包。每个包都有不同的数字,被接收的包都会
-
TCP packet的组成
- source + destination ports
- sequence number(used to order packets)
- ack number(used to verify packets are received)
TCP packet 交给 IP 来 deliver
,—
-
MSS:maximum segment size
-
Window:每一个接受回复都包含一个window域,告诉发送方自己能接受最多的字节数目
-
TCP层不知道上一层什么时候需要TCP的数据,TCP把它接收到的数据放在缓存中供上一层取用
-
Each TCP / IP address includes
- internet address
- protocol(TCP / UDP )
- Port number