什么叫做面向连接?
在两端建立一定的数据结构来维护双方的交互状态。
TCP包和UDP包都会被封装到IP包中,作为IP包数据的一部分在网络上传输。从IP包层看,没有区别。所谓的TCP是面向连接的是指使用了TCP协议的双方会维护一个传输状态的数据结构。为了保证TCP的可靠传输等特性,可以看到TCP头比UDP头复杂得多。
TCP连接的建立过程(3次握手)
理解三次握手,要明白一个现实,就是网络是不可靠的。终究TCP包是要被封装在IP包中的,IP传输本身就是不可靠的,TCP协议要想可靠,只有一个办法,重传。
A要和B建立连接,发送一个建立连接的请求,如同“你好”,B如果收到了“你好”,也应该回复A“你好”。B的回复是必须的,否则,A不知道B是否可达,或者B是否愿意建立这个连接。当A收到B回复的“你好”的时候,A就可以确认它的包B能收到,并且B的包它也能收到,就可以认为连接已经建立好了,但是此时B并不知道A是否能收到它的回答,所以此时B还不能认为连接建立好,需要A再次告诉B,”我已经收到了你的回复”。这样A-B, B-A, A-B,就构成了3次握手。
- 一开始两端都处于CLOSED状态,B是服务端需要监听端口,监听后变成LISTEN状态。
- A发送一个SYN(你好)后状态变为SYN-SENT
- B收到S