我想知道,如果套接字与SOCK_STREAM传输处于连接状态,那么在send()和recv()之间发送的数据包是否具有可靠的TCP协议?比如ACK和seq号来防止数据包丢失和正确性,还是我需要自己实现TCP协议?
另外,
如果UDP没有SOCK_DGRAM连接(),那么在sendto()和recvfrom()之间发送的数据包是否执行了UDP协议?(固定号码或计时器)
发布于 2017-05-09 17:35:48
您不需要自己实现TCP或UDP。
来自man 2 socket
SOCK_STREAM提供有序、可靠、双向、基于连接的字节流. SOCK_DGRAM支持数据报(无连接、固定最大长度的不可靠消息)。
来自man 7 tcp
tcp_socket = socket(AF_INET,SOCK_STREAM,0); 这是在RFC 793、RFC 1122和RFC 2001中定义的TCP协议的一个实现,并使用了NewReno和SACK扩展。
来自man 7 udp
udp_socket = socket(AF_INET,SOCK_DGRAM,0); 描述 这是RFC 768中描述的用户数据报协议的实现。
还请参阅man 7 socket、man 2 send和man 2 recv。
所有参考手册页都来自"Linux程序员手册“。
https://stackoverflow.com/questions/43876296
复制相似问题