TCP 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
44번째 줄: 44번째 줄:
  
 
=== 비교 ===
 
=== 비교 ===
TCP와 UDP는 포트 번호를 이용하여 주소를 지정하고, 데이터 오류 검사를 위한 체크섬이 존재한다는 공통점이 있지만, TCP는 전송의 순서가 보장되는 반면, UDP는 전송 순서가 바뀔 수 있다. 또한, 연결형 서비스인 TCP와 반대로, UDP는 비 연결형 서비스이다. 패킷 교환 방식에서는 TCP는 가상 회선 방식이고, UDP는 데이터 그램 방식이다. 오류 제어와 흐름 제어가 TCP에는 있지만, UDP에는 없다. 전송속도는 UDP가 TCP보다 빠르다. TCP는 수신 여부를 확인하지만, UDP는 수신 여부를 확인하지 않고, 1:1 통신만 가능한 TCP와 달리, UDP는 1:1, 1:N, N:N 통시 모두 가능하다. UDP는 신뢰성이 낮고, TCP는 신뢰성이 높다.<ref name="사"></ref><ref name="벚"></ref><ref name="말">코딩팩토리, 〈[https://coding-factory.tistory.com/614 (기타) TCP/UDP의 개념과 특징, 차이점]〉, 《티스토리》, 2020-11-14 </ref> UDP를 사용하는 애플리케이션 프로세스가 데이터를 UDP에 전달하자마자 데이터를 UDP 세그먼트로 만들고, 즉시 네트워크 계층으로 전송한다. 반면, TCP는 혼잡 제어 메커니즘을 가지고 있다. 따라서 네트워크가 혼잡해지면 TCP는 제어 정책에 따라 전송계층의 TCP Sender를 조절한다. 또한, TCP는 신뢰적인 전달이 얼마나 오래 걸리는지 상관없이 목적지가 세그먼트 수신 여부를 응답할 때까지 데이터 세그먼트 재전송을 계속할 것이다. TCP 데이터를 전송하기 위해 사전 연결 설정인 3-way handshake 과정이 필요하다. 반면, UDP는 예비 동작 없이 바로 전송한다. 그러므로 UDP 전송을 연결 설정 단계에서 어떠한 지연도 없다. 그리고 TCP는 엔드시스템(End System)에서 연결 상태를 유지한다. 이 연결 상태는 송수신 버퍼, 혼잡제어 [[파라미터]], 순서번호와 확인 응답 번호 파라미터를 포함한다. 이러한 정보는 TCP가 신뢰적인 데이터 전송 서비스를 구현하고 연결 상태를 유지하기 위해 필수적이다. 반면에 UDP는 연결 상태를 유지하지 않는다. 따라서 어떠한 파라미터도 기록하지 않는다. TCP는 세그먼트마다 20바이트의 헤더 오버헤드를 갖지만, UDP는 8바이트의 오버헤드를 갖는다.<ref>JEFF Jeff_Kang, 〈[https://rain-bow.tistory.com/entry/%EC%8B%A0%EB%A2%B0%EC%A0%81%EC%9D%B8-TCP%EB%B3%B4%EB%8B%A4-%EB%B9%84%EC%8B%A0%EB%A2%B0%EC%A0%81%EC%9D%B8-UDP%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0 신뢰적인 TCP보다 비신뢰적인 UDP를 사용하는 이유]〉, 《티스토리》, 2019-05-15 </ref>
+
TCP와 UDP는 포트 번호를 이용하여 주소를 지정하고, 데이터 오류 검사를 위한 체크섬이 존재한다는 공통점이 있지만, TCP는 전송의 순서가 보장되는 반면, UDP는 전송 순서가 바뀔 수 있다. 또한, 연결형 서비스인 TCP와 반대로, UDP는 비 연결형 서비스이다. 패킷 교환 방식에서는 TCP는 가상 회선 방식이고, UDP는 데이터 그램 방식이다. 오류 제어와 흐름 제어가 TCP에는 있지만, UDP에는 없다. 전송속도는 UDP가 TCP보다 빠르다. TCP는 수신 여부를 확인하지만, UDP는 수신 여부를 확인하지 않고, 1:1 통신만 가능한 TCP와 달리, UDP는 1:1, 1:N, N:N 통시 모두 가능하다. UDP는 신뢰성이 낮고, TCP는 신뢰성이 높다.<ref name="사"></ref><ref name="벚"></ref><ref name"말">코딩팩토리, 〈[https://coding-factory.tistory.com/614 (기타) TCP/UDP의 개념과 특징, 차이점]〉, 《티스토리》, 2020-11-14 </ref> UDP를 사용하는 애플리케이션 프로세스가 데이터를 UDP에 전달하자마자 데이터를 UDP 세그먼트로 만들고, 즉시 네트워크 계층으로 전송한다. 반면, TCP는 혼잡 제어 메커니즘을 가지고 있다. 따라서 네트워크가 혼잡해지면 TCP는 제어 정책에 따라 전송계층의 TCP Sender를 조절한다. 또한, TCP는 신뢰적인 전달이 얼마나 오래 걸리는지 상관없이 목적지가 세그먼트 수신 여부를 응답할 때까지 데이터 세그먼트 재전송을 계속할 것이다. TCP 데이터를 전송하기 위해 사전 연결 설정인 3-way handshake 과정이 필요하다. 반면, UDP는 예비 동작 없이 바로 전송한다. 그러므로 UDP 전송을 연결 설정 단계에서 어떠한 지연도 없다. 그리고 TCP는 엔드시스템(End System)에서 연결 상태를 유지한다. 이 연결 상태는 송수신 버퍼, 혼잡제어 [[파라미터]], 순서번호와 확인 응답 번호 파라미터를 포함한다. 이러한 정보는 TCP가 신뢰적인 데이터 전송 서비스를 구현하고 연결 상태를 유지하기 위해 필수적이다. 반면에 UDP는 연결 상태를 유지하지 않는다. 따라서 어떠한 파라미터도 기록하지 않는다. TCP는 세그먼트마다 20바이트의 헤더 오버헤드를 갖지만, UDP는 8바이트의 오버헤드를 갖는다.<ref>JEFF Jeff_Kang, 〈[https://rain-bow.tistory.com/entry/%EC%8B%A0%EB%A2%B0%EC%A0%81%EC%9D%B8-TCP%EB%B3%B4%EB%8B%A4-%EB%B9%84%EC%8B%A0%EB%A2%B0%EC%A0%81%EC%9D%B8-UDP%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0 신뢰적인 TCP보다 비신뢰적인 UDP를 사용하는 이유]〉, 《티스토리》, 2019-05-15 </ref>
  
 
== 용어 ==
 
== 용어 ==
'''LISTEN'''은 서버의 [[데몬]](Daemon)이 떠서 접속 요청을 기다리는 상태이다. '''SYN_SENT'''는 로컬의 클라이언트 애플리케이션이 원격 호스트에 연결을 요청한 상태이고, '''SYN_RECEIVED'''는 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답하였지만, 클라이언트에게 확인 메시지는 받지 않은 상태이다. '''ESTABLISHED'''는 3 방향 핸드셰이크가 완료된 후 서로 연결된 상태이다. 그리고 '''FIN-WAIT1''', '''CLOSED-WAIT'''와 '''FIN-WAIT2'''는 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태이다. '''TIME_WAIT'''은 연결이 종료되었지만, 분실되었을지 모를 느린 세그먼트를 위해 일정 시간 동안 소켓을 열어두고 있는 상태이다. '''CLOSING'''은 흔하지 않지만, 주로 확인 메시지가 전송 도중에 분실된 상태이다. '''CLOSED'''는 완전히 종료된 상태이다.<ref name="말"></ref>
+
'''LISTEN'''은 서버의 [[데몬]](Daemon)이 떠서 접속 요청을 기다리는 상태이다. '''SYN_SENT'''는 로컬의 클라이언트 애플리케이션이 원격 호스트에 연결을 요청한 상태이고, '''SYN_RECEIVED'''는 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답하였지만, 클라이언트에게 확인 메시지는 받지 않은 상태이다. '''ESTABLISHED'''는 3 방향 핸드셰이크가 완료된 후 서로 연결된 상태이다. 그리고 '''FIN-WAIT1''', '''CLOSED-WAIT'''와 '''FIN-WAIT2'''는 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태이다. '''TIME_WAIT'''은 연결이 종료되었지만, 분실되었을지 모를 느린 세그먼트를 위해 일정 시간 동안 소켓을 열어두고 있는 상태이다. '''CLOSING'''은 흔하지 않지만, 주로 확인 메시지가 전송 도중에 분실된 상태이다. '''CLOSED'''는 완전히 종료된 상태이다.<ref name"말"></ref>
  
 
{{각주}}
 
{{각주}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)