심층 TCP, UDP 프로토콜과 양의 차이의 이해

A, TCP 프로토콜 :

트랜스 포트 층에 위치 신뢰성 바이트 스트림 서비스를 제공한다. 호출 바이트 스트림 서비스 (바이트 스트림 서비스) 전송의 편의를 위해, 데이터는 조작자 또는 관리자의 데이터 패킷 세그먼트 (세그먼트)의 청크로 분할되고, 말한다. 그리고 데이터가 정확하고 안정적으로 서로를 전달할 수 있습니다 신뢰할 수있는 전송 서비스 수단 것이다. 즉 그런 다음에야 쉽게 데이터 전송, 데이터 및 TCP 프로토콜에 대해 분할 큰 TCP 프로토콜 데이터가 다른 자에게 최종 전달 여부를 확인할 수 있습니다. 따라서, 두 개의 파이프 (서버에 대한 클라이언트의 클라이언트가 서버에 대해 하나), 바이트 코드를 전송되는 데이터 전송 파이프에 대응하는 TCP 접속이 상기 송신이 지시되어, 각 바이트는 한 번에 전송 하나.

(1) 세 방향 핸드 셰이크 다음 TCP 플래그에서 사용되는 핸드 쉐이크 (플래그) - SYN (동기화)과 ACK (확인).

 제 악수 : 연결이 확립되고, 클라이언트 A는 서버 B에 SYN 패킷 (SYN = J)를 전송하고, 서버 B를 확인한다 기다리고 SYN_SEND 상태가된다.
 둘째 악수하십시오 즉 SYN 패킷 (SYN = K), SYN + ACK 패킷을 전송 자체 동안 서버 B는 SYN 패킷을 수신하고, SYN 고객 A를 확인한다 (ACK = J + 1), 서버 B에 이번에 SYN_RECV 상태입니다.
 셋째 악수 : 클라이언트 서버 B가 서버 B에 SYN + ACK 패킷을 수신은 확인 응답 패킷의 ACK (ACK = K + 1)에 전송 , 이 패킷의 전송이 완료되면 완전한 삼원 악수.

어떤 단계가 알수없는 핸드 셰이크 중에 인터럽트가 발생했을 경우, TCP 프로토콜은 다시 한번 같은 순서로 같은 데이터 패킷을 전송합니다. (2), 네 개의 파 : 각 방향으로 개별적으로 종료해야합니다 있도록 TCP 연결이 전이중가이기 때문에. 원리는 하나의 작업이 완료되면 데이터 전송이 연결 방향을 종료하는 FIN을 보낼 수 있다는 것입니다. 데이터가이 방향으로 흐르는되지하는 FIN 유일한 수단을 수신, TCP 연결은 여전히 ​​FIN을받은 후 데이터를 보낼 수 있습니다. 제 중 하나는 활성 닫고, 다른 수동 가까이 수행 종료.

A 클라이언트는 서버 B에 데이터를 송신하여 클라이언트 A를 폐쇄하는 FIN 보낸다.
 서버 B가 FIN을 수신하면 ACK가, 수신 확인 응답 시퀀스 번호 더하기 하나를 다시 송신한다.
 근접 클라이언트 서버 B가 접속되어, 클라이언트에 A. FIN을 보낸다
 클라이언트는 (1)에 의해 수신 된 순서 번호를 증가시켜 다시 ACK ACK 메시지를 전송한다.
그리고 네 개의 세 방향 핸드 셰이크 파장 : TCP 접속은 서버는 SYN과 ACK 클라이언트 일회용이며, 절단 공정에서, B 단부 (A)에 의해 전송 된 전송
ACK 및 FIN은 송신단이 두 배 전송. B 단자가 FIN를 수신하기 때문에, 단말기 B는 또한이 제 등의 ACK를 송신 FIN가 분리 전송할 수도있다 자신의 업무 후 단부 최종 B로 데이터를 전송할 수있다.

(3), 깊이있는 TCP 연결의 이해 :

TCP는 전이중이기 때문에, 각각의 방향으로 개별적으로 종료해야합니다. 이 원칙은 하나의 작업이 완료되면 데이터 전송이 연결 방향을 종료하는 FIN을 보낼 수 있다는 것입니다. 데이터가 그 방향으로 흐르지 수신 만 지느러미, 아직 FIN을받은 후 데이터를 보낼 수있는 TCP 연결을 의미한다. 먼저 온
다른 수행은 수동 폐쇄하면서 폐쇄 한 활성 가까이.
TCP 프로토콜 연결은 전이중 (full-duplex) 연결, TCP 연결이 양방향 읽기 및 쓰기 채널이 존재합니다. 간단히 말해, 그것은이다 "우선 읽은 다음 오프 쓰기", 네 단계의 총. 클라이언트는 접속 예를 닫고 개시 1 개 서버는 통로가 폐쇄 판독 2 클라이언트 기입 채널은 닫힌 3 클라이언트 판독 통로가 폐쇄 4 서버 기입 채널 폐쇄 ....
전송이 상대방의 발신 자 데이터의 완료 후까지 FIN (마감) 데이터 세그먼트 동작을 전송 닫는 FIN 다른 송신 및 ACK의 수신 확인을 수신 한 후에, 다른 수신 양측 사이의 데이터 통신이 완전하게 동안 완료 시간은 확인 응답 세그먼트 ACK를 반환해야한다.

(4)는 TCP 흐름 제어 윈도우 접동기구.
연결이 설정되면, 각각의 단부는 다른 단부에 수신 된 데이터를 저장하는 버퍼 및 전송 버퍼 크기를 할당한다. 수신기에 의해 수신 확인 메시지를 보냈습니다은 자신의 남아있는 버퍼 크기가 포함되어 있습니다. 나머지 버퍼 공간의 수는 윈도우라고 부른다. 사실, 호랑이 나머지 버퍼 크기를 알고 서로 상호 더블을 구축하는 것입니다.

(5), 혼잡 제어

혼잡 제어 : 사출 네트워크 라우터 일 수 있거나 링크가 방해되지 않도록하는 것이, 네트워크에 과도한 데이터를 방지한다. 혼잡 제어는 다른 프로세스 글로벌이며, 흐름 제어, 흐름 제어는 제어 포인트이다.

1, 느린 시작 : 유지 보낸 사람이라고 혼잡 윈도우 혼잡 윈도우 (혼잡 창) 상태 변수입니다. 혼잡 윈도우 크기가 변경 동적 네트워크 혼잡의 정도에 따라 달라지며. 송신자는 덜 혼잡 윈도우보다 있습니다 창을 보내는 계정에 수신 국의 수신 용량을 복용하는 동안, 자신의 동일한 혼잡 창을 확인하기 위해 창을 보냅니다. 아이디어는 다음과 같습니다 음주 혼잡 윈도우의 큰 증가로 소형의 크기를 말을하는 것입니다 네트워크 혼잡의 정도를 테스트하기 위해 많은 양의 데이터를 전송하기 시작하지.

과도한 네트워크 정체로 인한 혼잡 윈도우의 성장을 방지하기 위해, 또한 당신은 느린 시작 임계 값 SSTHRESH 상태 변수를 설정해야합니다. SSTHRESH 방법은 다음과 같다 :
CWND 때 <SSTHRESH 시간, 느린 시작 알고리즘을 사용하기 시작, CWND 경우> SSTHRESH의 혼잡 회피 알고리즘을 사용하여, CWND = SSTHRESH 있으면 느린 시작 알고리즘 임의 정체.
 2. 혼잡 회피 :

혼잡 회피 알고리즘은 혼잡 윈도우 느린 성장을 할 수 있습니다, RTT는 선형 법에 따라 혼잡 윈도우 느린 성장을 두배로 대신 혼잡 윈도우 혼잡 윈도우 보낸 플러스 1을 넣어 왕복 시간을 통해 각. 느린 시작 단계에서 또는 혼잡 회피 단계에서 여부, 한 ⽆ 방법을 결정하기 때문에 확인 응답 패킷이 다른 이유로 손실,하지만 될 수 있지만 응답을 기반으로 네트워크 혼잡을 (를 확인하기 위해 보낸 사람이 수신되지 않는 경우를 모두 여부 혼잡은 다음 혼잡 윈도우가 1, 느린 시작 알고리즘의 구현으로 설정되어있을 때 혼잡 처리)에 대한 전송 창에 나타납니다의 절반에 느린 시작 임계 값을 넣어 :

또한, 고속 재전송 및 빠른 복구, 정지 - 대기 프로토콜은 N 프레임 계약을 선택 재전송 계약을 폴백. 

둘째, UDP 프로토콜 :

연결형 프로토콜도 또한 수송층에 위치한 투명 프로토콜로 알려진.

三、两者区别:

1) TCP提供面向连接的传输,通信前要先建立连接(三次握手机制); UDP提供无连接的传输,通信前不需要建立连接。
2) TCP提供可靠的传输(有序,无差错,不丢失,不重复); UDP提供不可靠的传输。
3) TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组; UDP是面向数据报的传输,没有分组开销。
4) TCP提供拥塞控制和流量控制机制; UDP不提供拥塞控制和流量控制机制。


三、长连接和短连接

HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。 IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包,并且顺序与发送顺序一致。TCP协议是可靠的、面向连接的。

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

Connection:keep-alive


在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

https://www.cnblogs.com/gotodsp/p/6366163.html

此外,如果想更进一步学习网络相关的知识,可以参照:https://blog.csdn.net/striveb/article/details/84062700
————————————————
版权声明:本文为CSDN博主「striveb」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/striveb/article/details/84063712

 

추천

출처www.cnblogs.com/aimaogoudexiaohao/p/12014155.html