首页 > 其他 > 详细

对于tcp和udp的我的理解

时间:2019-08-11 22:34:39      阅读:118      评论:0      收藏:0      [点我收藏+]

TCP是传输控制协议,是面向连接的服务,安全,传输速度较慢
安全体现在它的三次握手四次挥手以及响应和重传。
三次握手用通俗易懂的方式来讲即:
A ->B(A向B发了一句:你好,在吗)(其效果是让B知道A能到B)
A<-B(B向A发送:你好,我在,你听得到吗)(其效果是让A知道了A能到B,B也能到A)
A->B(A向B发送:我听的到)(其效果是让B知道B也能到A)
这里为什么不能是两次或者四次呢?
我们要知道这三次让双方都知道了双方都能接受到对方的消息,两次不能让B知道自己是否能到A四次则太多余浪费资源。
四次握手
我们也用通俗的方法来解释即
A->B(发送关闭请求)(我要关闭了,你准备好了吗?)
B->A(发送响应请求)(我下去看一下我有没有好你等我一下)(B查看自己有无未发送完毕的信息)
B->A(我好了,你关闭吧)
A->B(好,我关闭了)
四次挥手主要是为了解决关于信息未发送完毕的情况。

DUP是数据报文协议,是面向无连接服务,相对于TCP来说传输速度较快,不保证安全,可靠,但大多数情况下安全

TCP主要用于安全性要求较高的场景:FTP,SMTP,HTTP

DUP用于流媒体,在线的视频,音频。

TCP的C/S模型
服务器
创建套接字 (int sockfd=socket(AF_INET,SOCK_STREAM,0))
准备地址(struct sockaddr_in addr
(该结构体中有sin_family,sin_port,sin_addr.s_addr),
其中sin_family使用AF_INET,
sin_port使用字节序转化函数
这里我们使用16位本机字节序转换为16位网络字节序sin_port=htons("这里填端口号,要网络连接双方端口号须一致"))
后面sin_addr.s_addr中选择IP地址,既可以是本机地址,也可以是该机所在的局域网的地址。
我们利用socklen_t len=sizeof(addr);
绑定(bind(sockfd,(struct sockaddr)addr,len))(这里sockaddr的强制类型转换是由于我们所设定的是sockaddr_in类型的addr)
监听(listen(sockfd,(数量)))(即监听的数量)
等待连接(accept(sockfd,(struct sockaddr
)addr,&len))
接收请求接收在linux中可以使用send和read,send(sockfd ,buf,sizeof(buf),0)(这里的0或1代表阻塞或不阻塞)
响应请求响应在linux中可以使用write和recv,recv(sockfd ,buf,sizeof(buf),0)(这里的0或1代表阻塞或不阻塞)
关闭close

对于tcp和udp的我的理解

原文:https://www.cnblogs.com/Maoey/p/11336635.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!