linux网络编程

来源:互联网 发布:最好的手机优化软件 编辑:程序博客网 时间:2024/05/17 01:03

1.UDP
简称:用户数据报协议
原理:数据报协议的特点用一句话来形容就是他不够安全,他不关心数据是否被接收,
只要指定IP地址就发送,不关心,数据会因为局域网或者广域网因为各种原因造
成的丢包,数据排序等数据发送变化等结果,而且不同于TCP的一点是每次UDP
传输数据的时候会将数据的长度一并发送。
2.TCP
简称:传输控制协议
原理:它相对于UDP来说要安全很多,因为他有一个握手协议,每次传输之前都要进行
三次握手,只有当接收端有回应的时候才能传输数据,否则他有一系列的保护特性,重
传等措施,当重传数次都失败,那么就放弃,TCP会对传输的数据的每一个字节都要进
行排序,这样接收端会根据排序的信号来判断数据是否重复,如果数据重复那么就丢弃
,TCP提供流量控制,也就是说每次传输数据都会告诉接收端要发送数据的大小,也叫
通告窗口,接收端通过这个通告窗口来知道对方是否可以接收数据,也就是数据缓冲区
是否可以在传入数据,这也就造成了阻塞的效果,只有当发送端去数据缓冲区内读取数
据后才可以再次传输数据,TCP是一种流数据控制协议,意思就说,它并没有任何标志
知道数据是否是一帧的结束,这些必须自己在应用程序中自己处理。

三次握手:
1.从服务端来看最开始知识三个函数:socket,bind,listen这三个函数,
2.客户端向服务端发送同步字节,告诉服务端发送数据的初始序列号,和TCP选项。
3.服务端向客户端回应,并且也发送同步字节,告诉客户端发送数据的初始序列号,
4.客户端回应服务端ACK
TCP选项:
1.MSS选项:就是数据分节的大小
2.窗口规模选项:数据缓冲区的大小
3.时间戳选项:这个不用关心,编程用不到。
四次挥手:
1.任意一段关闭调用close关闭文件描述符后,发送给另一端,表示数据传输完成
2.接收端收到结束字节后被动关闭
3.关闭套接字后在发送一个结束符给对方
4.确认结束符
3.SCTP
简称:流传输控制协议
原理:他继承了TCP和UDP的几乎所有特点,他会在SCTP上可以传输多个流,不会因
为一个流的数据发送以外而影响另一个流的传输,相对于TCP来说SCTP并没有
阻塞的特性,如果数据发生阻塞,那么会切换到使用已与该链接相关的另一个地
址来规避故障,因为它可以与多个端点进行传输。

端口号:端口号就是识别什么服务的一个标识。

并发服务器:这个具体原理我不是特别懂,主要是通过fork创建一个子进程进行发送传输的功能,主进程是通过检测是否有客户端连接,然后创建子进程传输。

理解网络状态转换图
这里写图片描述

原创粉丝点击