java基础班 网络编程应该提过。大学学计算机或者是通信的对这些东西肯定比较熟一些。主机到网络层是跟硬件相关的一些协议了。上层协议得依赖下层的协议。也就是说它们得联合起来共同工作才能够把数据传输出去。应用层要调用传输层的也依赖传输层的,传输层要依赖网络互联层。网络互联层最终要把数据发出去还要依赖最下面的主机到网络层,最终才会把这个数据发出去。所以四层的结构咱们要搞清楚。
要知道HTTP、TCP、IP协议分别都处于哪一层。好了,这个四层的模型咱们要搞清楚。‘
8080代表当前这台主机运行的这么一个软件,它占用的是哪一个端口。端口是不会重复的,一旦有程序占用了8080这个端口,如果你tomcat是后起来的话,那这个时候它就启动不了了。这个端口被别人占用了。
在IP的基础之上有一个TCP/UDP协议。TCP:面向连接 UDP:面向无连接的。TCP:像送快递的,第一次握手给你打电话,你说送过来吧,然后就给你送过来了。
第一次就是发了一个数据包,其实这个数据包就是想把连接打开的,这三次握手其实就是把连接创建起来。三次握手之后连接才真正创建,这个时候才可以进行数据的传输。断开的时候TCP还有四次的挥手。
第一次挥手就是我现在马上要关闭了,发送一个断开连接的请求,然后服务端给它回一句,好了,你可以断了。在第一次和第二次挥手的时候还是有数据进行传输的。然后服务端就等一下,有一个CLOSE-WAIT.等一下服务端的数据彻底的传过去之后,又给客户端发一条消息我现在彻底断开了。客户端收到服务端的消息,就可以断开了。接下来客户端也不会给服务端传数据了。所以就一共是四次通信/四次挥手。
三次握手和四次挥手保证了TCP连接相对来讲是比较安全的。HTTP协议是在TCP协议基础之上的。所以HTTP协议相对来讲也是比较靠谱的。大部分情况下,网络没有问题的情况下,很少会出现数据丢失的情况。
UDP:面向无连接,邮局。往信箱一丢,至于这个信封有没有人收到它不管。
UDP就不一样了,它直接就发。比如咱们这个飞秋,飞秋实际上用的就是UDP,这个东西你只要在线就能收到。如果不在线这个消息一样可以发,但是发完了那个人不见得会收到。这个就是TCP和UDP的区别。
TCP是协议,socket是java搞的做TCP/IP开发的一套接口/API.ServerSocket这边等待客户端的连接,客户端new一个socket传一个IP,传一个端口,就可以跟我的服务端建立一个连接。这个就是咱们要搞清楚的一个socket和TCP/IP它们之间的关系。实际上TCP/IP这一套协议实际上它不包含socket,跟socket没啥关系,在java下你要做TCP/IP相关的开发你要用到的API就是socket套接字。