[컴퓨터 네트워크] TCP, UDP

Pakxe·2023년 9월 22일
1

컴퓨터 네트워크

목록 보기
6/16
post-thumbnail

구성

  • Transport protocols
  • TCP
  • UDP
  • 요약

이 정리는 23-2에 수강한 컴퓨터 네트워크 강의를 기반으로 하였습니다.

Transport protocols

트랜스포트 계층은 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당하는 계층이다.

인터넷은 트랜스포트 계층에서 어떤 서비스를 제공하는지에 따라 크게 TCP, UDP로 나뉜다.

TCP(Transmission Control Protocol)

TCP는 신뢰성있는 데이터 전송과 연결 지향적인 통신을 제공하는 프로토콜이다. 제공하는 주요 기능은 아래와 같다. 연결 후 통신할 수 있다. 데이터가 보존되므로 신뢰성이 필요한 응용 프로그램에서 주로 사용된다.

Reliable transport

전송 중 발생한 데이터 손실, 중복, 오류 등을 감지하고 복구한다. 이상이 발생한 데이터의 재전송을 요구해 갈아끼우기도 한다. 이를 통해 데이터 무결성이 보존된다.

flow control

수신자가 처리할 수 있는 속도에 맞춰 데이터를 전송하게 함으로써 과부하를 막는 기능이다.

congestion control

네트워크 혼잡 상황에서 데이터 전송 속도를 제한해 혼잡을 최소화한다. 이는 패킷 손실을 줄일 수 있는 기능이다

connection-oriented

통신 시작시 회선 독점 연결, 끝나면 연결을 해제하는 연결 지향적인 프로토콜이다. 이로서 데이터를 안정적으로 주고받을 수 있다.

UDP(User Datagram Protocol)

UDP는 비연결성 프로토콜로, 일방적으로 데이터를 전달하도록 통신을 제공하는 프로토콜이다. 연결없이 통신할 수 있으며, 혼잡 제어같은 기능이 없기 때문에 빠르다.

데이터 전송이라는 본질 자체에만 집중한 프로토콜이라고 할 수 있다. 그 과정에서 일어나는 오류같은 것들은 신경쓰지 않는다. 일단 전송만 하면 "난 최선을 다했어.."라는 말을 할 것 같은 프로토콜이다.

따라서 실시간 통신 응용 프로그램에서 주로 사용된다. 다만 데이터 손실, 순서 미스를 감당해야한다.

unreliable transport

reliable transport와 반대로 데이터 무결성을 보존하지 않는다.

connectionless

udp는 연결을 설정, 해제하는 과정을 수행하지 않는다. 따라서 속도가 빠르다.

DNS는 UDP사용

IP가 잘못되면 어쩌려고 DNS가 UDP를 채택해 사용하는 것일까?

손실 대비는 DNS 내부에 타이머를 돌리고 만약 타임아웃 때 까지 res가 오지 않는다면, 재요청(query)을 날린다. 이는 DNS는 APP계층 프로토콜이기 떄문에 재전송 책임이 APP계층에 있다고 할 수 있다.

그리고 딱 한번의 rtt(요청 + 응답)을 위해 하나의 rtt(핸드셰이킹)을 더 쓰는 것은 낭비이기 때문에 굳이 TCP를 사용하지 않는 것이다.

패킷 오류는 다른 프로토콜을 사용해 대응한다.

UDP segment header

  • source port #
  • dest port #
  • length
  • checksum
  • data
    UDP의 세그먼트 헤더는 위 필드로 구성되어 있다.

checksum 필드는 간략하게 말해 세그먼트를 16bit씩 자르고 이들을 더한다. 만약 carry out이 생기면 그건 다시 0의 자리로 가서 더한다. 그리고 1의 보수를 취한 값이 체크섬에 들어간다. 그러나 이게 모든 오류를 잡진 못한다.

요약

  • TCP: 신뢰성, 쌍방 연결 필요, 보존, 메일
  • UDP: 빨라서 스트리밍에 사용

참고

https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://cocoon1787.tistory.com/757

잘못된 내용이 있으면 pigkill40@naver.com 으로 연락주시기 바랍니다.

profile
내가 꿈을 이루면 나는 또 누군가의 꿈이 된다.

0개의 댓글