1. 电路交换和分组交换的区别,优劣对比
2. TCP/IP协议有哪几层,各层的作用是什么?列举各层主要的协议名称
- 应用层:提供应用层面沟通的层
主要协议:ftp http smtp telnet(tcp) dns(udp) ping(icmp)- 传输层:提供节点间的数据传输服务
主要协议:tcp(基于字节流面向链接,所以长连接时容易出现粘包问题)、udp(基于数据报,无连接,不会出现粘包问题)- 网络层:标明数据的目的地址,不能保证传输数据的正确性,
主要协议:ip协议,ICMP协议(ping),ARP协议,RARP协议,IGMP协议- 网络接口层:对于实际的网络媒体进行管理,定义如何使用实际网路来传输数据
TCP
- 源端口号和目的端口号:各占两个字节分别写入源端口号和目的端口号
- 序号:占4个字节,序号范围是(1,2^32-1),共2^32个序号,当序号增加到2^32-1时,下一个序号就会回到0。用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
- 确认序号:是期望收到对端下一个报文段的第一个数据字节的序号
- 头部长度:占4位,TCP报文短的首部长度,最大60,没有用选项是20.
- 预留:由跟在数据偏移字段后的6位构成,预留位通常为0.
- 标志位:
URG:紧急指针(urgent pointer)有效
ACK:确认序号有效
SYN:发起一个连接
RST:重置 连接,当RST位置为1后说明TCP链接中出现严重问题,必须释放连接然后重新建立
PSH:在要求键入一个命令时,无需等待就立即要收到对方的兴颖时,使用PSH位,将PSH位置为1后,接收方不等缓冲区填满就向上交付数据。
FIN:关闭连接标志位- 窗口大小:占两个字节,指的是发送本报文段的一方的接收窗口大小,表明接收方允许对方发送的数据量。
- 校验和:采用CRC校验。
- 紧急指针:紧急指针仅在URG=1时才有效,指出本报文段中的紧急数据的字节数(也就是紧急数据的末尾在报文段中的位置),窗口为0时也可发送紧急数据。
2. URG与PSH的区别
URG(紧急位):当URG=1的时候,紧急指针有效。紧急指针是一个正的 偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是从发送端向另一发送发送紧急数据的方式。数据从第一个字节到紧急指针所指字节就是紧急数据。数据段中的紧急数据不进入缓冲区就直接交给上层进程,而余下数据则要进入接收缓冲区。
PSH(急迫位):PSH=1时,客户端发送给服务器的报文段立即被服务器TCP交付给应用进程处理,而不用再等整个缓存都填满之后再向上交付。一般情况下,TCP等缓冲区写满之后才向上提交给应用进程,注意PSH=1时数据还是要从缓冲区向上提交的,只是不用再等到缓冲区满了之后再向上提交
3. TCP通过哪些措施保证传输的可靠性
超时重传:
为每个TCP报文段都维护一个重传定时器,定时器在TCP报文段都维护一个重传定时器,定时器在TCP报文段第一次被发送时启动,如果超时时间内未收到应答,则重传报文段并重置定时器。
确认相应
对于一个收到的请求都将发送一个确认
首部校验
由发送端填充16位校验和,接收端进行CRC校验,及教研TCP头部,又校验数据。
对接收到的数据进行排序
丢弃重复数据
流量控制
TCP通过窗口的大小进行流量控制,防止接收慢的主机缓冲区溢出
- 面向字节流,不对数据解析,防止报文被截断