ip协议是无连接的通信协议,他不会占用两个正在通信的计算机通信线路,这样ip就降低了对网络线路的需求,每条线都可以满足计算机不同的通信需要,通过lp其他消息或者数据,会被分割成较小的独立的包,并通过internet在网络之间传送,ip负责将包路由到目的地,但是ip协议没有确认数据包是否按顺序发送,或者包是否被破坏,所以ip数据包不可靠,需要由他的上层协议作出控制
传输控制协议tcp(Transmission Control Protocol)简介:
- 面向连接,可靠的,基于字节流的传输层通信协议
- 数据传输时,应用层向tcp发送数据流,tcp将数据流分割成报文段,并发送给目标节点的tcp层,数据包的大小受计算机的链路层的最大传输单元及mpu的限制,最后tcp将结果包传给ip层,由他来通过网络将包传给目标tcp层
- tcp为保证不丢失包,就给每一个包一个序号,即sequenceNumber,同时序号也保证了包的按序处理,然后接收端对已成功接受到的包,返回一个响应的确认即ack确认,如果未收到确认则重发
- tcp使用校验和来检验数据在传输过程中是否有误
source Port 和destination port是属于传输层支持范畴的
ip层的IP地址可以唯一标识主机,tcp协议 端口号可以可以唯一标示主机中的一个进程,我们就可以通过IP地址+协议+端口号组合的唯一标示,去标识网络中的一个进程,在某些场合也将这种唯一标示成为套接字(socket)
acknowledge Number是希望收到的下一个报文的第一个字节的序号。比如B接受到了A发送过来的报文,其序列号字段是301,而数据长度是200字节,这表明 B接受到了A发送的到序号500的数据 ,因此B希望收到A的下一个字节的序号是501,于是B发送给A的确认报文段时,会把ACK确认号置为501。
当应用程序想通过tcp与另外一个程序通信时,这个请求必须被送到一个确切的地址,在双方握手之后,tcp将在两个应用之间全双工的通信,这个将占用两个计算机之间的线路,直到被谋一方或者双方关闭位为止。全双工是指:双方都可以相互发送信息
为什么需三次握手才能将连接建立起来?
主要是为了初始化SequenceNumber的初始值
首次握手的隐患
问题起因分析: