Java中的socket编程

Q:什么是socket?

A:它是应用层与TCP/IP协议族通信的中间抽象层,它是一组接口,应用层通过它实现数据的收发.一般这种抽象层是由操作系统或者JVM虚拟机自己实现.使用socket可以简单的实现应用程序在网络上的通信.一个机器向socket写入信息,另外一个机器则可以读到.TCP/IP协议族中分两种socket类型,分别是TCP协议和UDP协议.如图:


socket抽象层在传输层与应用层之间,增加这一层是很有必要跟有用的,它类似于设计模式中的门面模式,用户没必要知道和处理复杂的TCP/IP协议族业务逻辑的细节,这时socket就展现出它的优势了,它把这些复杂处理都隐藏在socket接口下面,它帮助用户解析组织TCP/IP协议族报文数据,以符合TCP/IP协议族,这样用户只要简单调用接口即可实现数据的通信操作.

Q;什么是三次握手和四次握手

A:三次握手指的是建立TCP连接,四次握手指的是终止TCP连接.下面我们详细说说:

TCP建立连接需要进行三组交换,流程如下:

1.客户端发送服务端一个请求SYN J;

2.服务端向客户端响应一个SYN K,并对SYN J 进行确认ACK J+1;

3.客户端再向服务端发出响应ACK K+1.


总结:客户端调用connect函数,触发请求,向服务端发送SYN J 包,connect进入阻塞;服务端监听到客户端SYN J请求,调用accept函数并向客户端SYN K, ACK J+1并进入阻塞状态;客户端接收到返回后确认后connect返回,并对SYN K进行确认;服务端接收到ACK K+1,accept返回,三次握手结束,连接结束.

TCP终止连接需要进行4个步骤:


进程调用close主动关闭连接,TCP主动发送FIN M;服务器接收到FIN M,执行被动关闭,并对其进行确认,返回ACK M+1;服务器主动调用close关闭连接,TCP主动发送FIN N;客户端接收到消息会返回一个确认信息ACK N+1.

Q:简单介绍一下TCP协议和UDP协议

A:

TCP优缺点:

优点:可靠稳定,因为建立连接的时候会经历三次握手
缺点:效率低,速度慢,已被攻击,因为三次握手的会消耗大量资源,同时会更容易遭受DOS,DDOS,CC等攻击


UDP优缺点:

优点:无状态传输,没有那么多的确认机制,传入速度快,不容易遭受攻击

缺点:没有可靠的机制,网络出现波动,容易丢包

想看具体的代码实现,推荐大家看这篇博客:

https://blog.youkuaiyun.com/yjp19871013/article/details/53537398

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值