课后习题1-5
1.网络通信协议分为几层?各层解决的问题是什么?
物理层
它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是数模转换与模数转换)。这一层的数据叫做比特。
数据链路层
它的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层的数据叫做帧。
网络层
该层的主要任务就是:通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。
传输层
传输层的主要功能就是:监控数据传输服务的质量,保证报文的正确传输。
会话层
它的作用就是建立和管理应用程序之间的通信。
表示层
表示层负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能处理的格式。
应用层
应用层是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。
参考:一文看懂网络七层协议/OSI七层模型 - 知乎 (zhihu.com)
2.TCP和UPD协议有什么不同?为什么称TCP是面向连接的可靠的协议?
TCP全称Transmission Control Protocol(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通讯协议。
UDP全称User Datagram Protocol(用户数据报协议)是一种面向事务的、基于流、简单不可靠的信息传送协议。
区别
- TCP 是面向连接的,UDP 是面向无连接的
- UDP程序结构较简单
- TCP 是面向字节流的,UDP 是基于数据报的
- TCP 保证数据正确性,UDP 可能丢包
- TCP 保证数据顺序,UDP 不保证
TCP面向连接:面向连接,在服务器与客户端通信之前需要三次握手建立连接,通信之后需要四次挥手断开连接。
3.在JAVA语言中,网络编程是从协议的什么层次开始的?程序设计时,什么情况下选择JAVA高层次网络编程,什么情况下选择低层次网络编程?
传输层。低层次网络编程是TCP和UDP,高层次网络编程是基于URL的。
4.socket编程时,目的地址和端口号需要在什么地方指出?使用数据报时,又在什么地方指出
在第二步进行绑定操作时,目的地址、目的端口号都需要指明。