HotFoxy
불여우의 전직 이야기
알고 싶은게 너무 많다!
전체 방문자
오늘
어제
  • 분류 전체보기 (138)
    • 연구한 이야기 (26)
      • 깊게 공부해보기 (7)
      • 문제 해결 이야기 (12)
      • 맡은 업무 이야기 (6)
    • 전직 이야기 (0)
      • 1년이라는 시간 (5)
      • 프로카데미 이야기 (5)
    • 공부한 이야기 (90)
      • 알고리즘 (7)
      • 리눅스 (11)
      • 클라우드 (24)
      • 윈도우 OS (17)
      • 윈도우 소켓 프로그래밍 (11)
      • 네트워크 (17)
      • Docker & K8S (0)
      • 기타 (3)
    • 자격증 이야기 (12)
  • MSB : Mad Square's Brawl
  • GITHUB

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HotFoxy

불여우의 전직 이야기

공부한 이야기/네트워크

모두의 네트워크 VI : 전송 계층

2023. 4. 29. 22:13

VI : 전송 계층

모두의 네트워크 을 읽고 정리한 문서입니다 ;)

모두의 네트워크 VI : 전송 계층
신뢰할 수 있는 데이터 전송하기

Lesson 23 : 전송 계층의 역할

전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달해 주는 계층이다.

이를 위해 오류를 점검하는 기능이 존재한다.

또한, 해당 데이터가 어떠한 어플리케이션에 전달되어야 하는지를 포트를 통해 알고 전달해준다.

전송 계층의 통신에는 두 종류가 존재한다.

  • 연결형 통신 : TCP
    • 신뢰할 수 있고 정확한 데이터를 전달하는 통신
    • 일반적으로 대부분의 데이터를 주고받는 통신에 사용
  • 비연결형 통신 : UDP
    • 효율적으로 데이터를 전달하는 통신
    • 빠른 전송이 무엇보다 필요한 경우나 제어만을 위한 통신에 사용

Lesson 24 : TCP의 구조

전송 계층에서 TCP를 통해 통신할 때, TCP 헤더를 붙이는데, 이 헤더까지 붙은 데이터를 세그머트 라고 부른다.

데이터를 전송하려면 연결 작업을 통해 가상의 독점 통신로를 확보해야 하는데, 이는 TCP 헤더의 코드 비트 부분을 통해 진행된다.

코드 비트는 URG, ACK, PSH, RST, SYN, FIN 의 여섯 비트를 가진 제어 영역이다.

이 때 연결을 확립하려면 SYN 과 ACK 가 필요하다.

이 제어 비트들을 사용하여 TCP 연결을 수립하는 작업을 3-Way 핸드셰이크 라고 한다.

클라이언트가 서버에 SYN 으로 연결 요청을 보내면, 서버가 클라이언트에게 SYN + ACK 비트를 설정하여 응답해주고, 클라이언트는 다시 서버에 ACK 를 회송하여 서로 연결을 수립하게 된다.

연결을 끊을 때는, 요청자 쪽이 FIN 신호를 보내면, 받은 쪽에서는 ACK 응답에 이어서, 다시 FIN 신호를 보내고, 마지막으로 요청했던 쪽이 ACK 신호를 보내는, 4-Way 핸드셰이크로 이루어진다.

정리

  • 전송 계층에서 신뢰할 수 있는 통신을 구현하는데, 신뢰성의 TCP와 효율성의 UDP 로 구분된다.
  • TCP 헤더가 붙은 데이터는 세그먼트이며, 이 헤더에 6비트 제어 신호를 통해 연결이 수립된다.
  • TCP 연결 수립은 3-Way 핸드셰이크, 연결 해제는 4-Way 핸드셰이크로 이루어진다.

Lesson 25 : 일련번호와 확인 응답 번호의 구조

실제로 상대방과 데이터를 통신할 때에, TCP 헤더의 일련번호 (Sequence Number) 와 확인 응답 번호 (Acknowledgement Number) 를 사용하여, 몇 번째 데이터를 얼마나 받았는지 서로 통신하게 된다.

이렇게 응답 번호를 사용하게 되면 몇 번째 데이터가 이상이 있거나 유실되었는지 알 수 있기에, 일정 시간 이후 재전송해주는 재전송 제어가 가능해진다.

하지만 이처럼 세그먼트 하나하나를 응답을 받아 가며 통신하게되면 비효율적이기에, 여러 개를 병렬적으로 전송하고 응답을 받는 슬라이딩 윈도우 방식을 사용한다.

TCP 헤더의 윈도우 크기 칸에 자신의 버퍼 크기를 적음으로서 서로 3-Way 핸드셰이크 시에 상대방의 윈도우 크기를 알 수 있다.

Lesson 26 : 포트 번호의 구조

한 호스트 내부에서도 다양한 프로세스가 네트워크 사용을 요청하기 때문에, 이들을 포트 번호로 나누어 요청과 응답을 구분하고 있다.

포트는 2바이트의 크기를 가지며, 이는 0~65535이다.

0~1023번은 잘 알려진 포트로서 시스템 동작에 핵심적인 기능들이 사용하는 포트이거나 유명한 서비스들이 사용하는 포트이다.

1025번 이상은 랜덤 포트로서, 클라이언트측의 송신 포트로 사용된다.

Lesson 27 : UDP의 구조

UDP는 비연결형 통신이기에, TCP처럼 연결 수립과 해제를 위해 핸드셰이킹을 하는 등의 비용을 부담하지 않는다.

UDP 헤더 또한 TCP 헤더보다 더욱 크기도 작고 간결한데, 출발지 포트 번호, 목적지 포트 번호, 길이, 체크섬으로 구성되어 있다.

또한, UDP를 사용하면 네트워크에 존재하는 모든 호스트에게 브로드캐스트를 보낼 수 있다.

정리

  • UDP는 TCP보다 더욱 짧고 간단한 헤더를 가진 비연결지향 프로토콜이다
  • 이 특성 덕분에 네트워크에 메시지를 전파하는 브로드캐스팅이 가능하다
  • UDP 헤더가 있는 데이터를 UDP 데이터그램이라고 한다
저작자표시 (새창열림)

'공부한 이야기 > 네트워크' 카테고리의 다른 글

모두의 네트워크 VIII : 네트워크의 전체 흐름 살펴보기  (0) 2023.04.29
모두의 네트워크 VII : 응용 계층  (0) 2023.04.29
모두의 네트워크 V : 네트워크 계층  (0) 2023.04.29
모두의 네트워크 IV : 데이터링크 계층  (0) 2023.04.29
모두의 네트워크 III : 물리 계층  (0) 2023.04.29
    '공부한 이야기/네트워크' 카테고리의 다른 글
    • 모두의 네트워크 VIII : 네트워크의 전체 흐름 살펴보기
    • 모두의 네트워크 VII : 응용 계층
    • 모두의 네트워크 V : 네트워크 계층
    • 모두의 네트워크 IV : 데이터링크 계층
    HotFoxy
    HotFoxy
    1년 동안의 고군분투 전직 이야기! ..가 완료되어, 게임개발자로 살아남는 이야기!

    티스토리툴바