明确几个关于网络编程方面的概念问题?
1.TCP UDP报头,一般是不是对于我们来说是透明的?平时使用的时候也没特意关注报头~ 哪些地方有需要处理这些报头信息。(拿socket的源IP 和端口号?)
2.UDP发送和接收时数据包大小是不是要一样?
3.一个socket对象是不是就相当于一个独立线程?
[解决办法]
1、对传输层以上的应用来说,报头是透明的
连接的时候,能知道对方的ip和端口
2、udp不保证数据的完整性和次序
3、socket和线程是没什么联系的吧,当然,各个socket都是独立的
[解决办法]
1.TCP UDP报头对于我们来说是透明的!
2.tcp可以保证数据的完整性,而udp不能保证。次序与网络有关!socket是否是异步!
[解决办法]
1. RAW socket可能需要了解
2. UDP接收提供的buf能容纳所需接收的数据的前提下,UDP接收端要么接收完整的数据包,要么接收不到,不会出现只接收一部分的情况。比如你发送端发送10K
的UPD数据包,接收端要么接收10K的数据,要么接收不到,不会出现只接收5K的情况。
3. socket和线程不是同一个概念