[Network] 모두의 네트워크 - Chapter 6.

Yeon Jeffrey Seo·2021년 12월 19일

네트워크

목록 보기
6/9
post-thumbnail

Chapter 6. 전송 계층: 신뢰할 수 있는 데이터 전송하기

LESSON 23. 전송 계층의 역할

전송 계층의 두 가지 기능

전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하는 역할을 수행한다. 이 역할을 수행하기 위한 두 가지 기능을 가진다.
1. 오류를 점검하는 기능 : 오류가 발생하면 데이터를 재전송하도록 요청.
2. 전송된 데이터의 목적지가 어떤 애플리케이션인 식별하는 기능
ex) 홈페이지에서 사용하는 데이터를 메일 프로그램에 전송하지 않도록 한다.

연결형 통신과 비연결형 통신

  1. 연결형 통신 : 신뢰성/정확성이 요구되는 환경에서 사용. 송/수신측이 서로 통신 상태를 확인하며 통신한다. TCP
  2. 비연결형 통신 : 효율성이 요구되는 환경에서 사용. 수신측의 통신 상태 확인 보다는 빠른 데이터 전송에 초점을 둔다. UDP, 스트리밍

LESSON 24. TCP의 구조

TCP란?

TCP 헤더 구조

캡슐화 : 응용 계층부터 물리 계층까지 계층별로 데이터를 전달할 때 헤더를 붙이는 것
역캡슐화 : 수신측 물리 계층부터 응용 계층까지 계층별로 데이터를 전달할 때 헤더를 제거하는 것
세그먼트 : TCP 헤더가 붙은 데이터

TCP 통신은 데이터 전송 전 연결(Connection)을 확립해야 한다.

*연결(Connection) : TCP 통신에서 정보를 전달하기 위해 사용하는 가상의 통신로

TCP 헤더 중 Flags 혹은 Code bit 영역은 아래와 같이 구성되어있다.

URGACKPSHRSTSYNFIN
000000

이 중 SYN, ACK가 필요. SYN은 연결 요청, ACK는 확인응답.

3-way handshake

연결 확립 시 (establish connection)

1. 클라이언트 측에서 서버측으로 연결 확립 허가를 받기 위한 요청(SYN)을 보낸다.
2. 서버 측은 SYN을 받은 뒤 허가 응답을 회신하기 위해 연결 확인 응답(ACK)를 보낸다. 또한 서버 측도 클라이언트 측에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보낸다.
3. 클라이언트 측은 서버 측 연결을 허가 하기 위해 연겷 확립 응답(ACK)을 보낸다.

연결 종료 시 (terminate connection)

1. 클라이언트 측에서 서버 측으로 연결 종료 요청(FIN)을 보낸다.
2. 서버측에서 클라이언트측으로 연결 종료 응답(ACK)을 보낸다.
3. 서버측에서 클라이언트 측으로 연결 종료 요청(FIN)을 보낸다.
4. 클라이언트 측에서 서버측으로 연결 종료 응답(ACK)을 보낸다.

LESSON 25. 일련번호와 확인 응답 번호의 구조

일련 번호와 확인 응답 번호란

연결 확립 후 실제 데이터를 보내거나 상대방이 받을 때는 TCP 헤더의 일련 번호(sequence number)와 확인 응답 번호(acknowledgement number)를 사용한다.

일련 번호 : 송신 측에서 수신 측에 '이 데이터가 몇 번째 데이터인지' 알려주는 역할
확인 응답 번호 : 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할

일련 번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우, 데이터를 재전송하게 되어있음. (재전송 제어)

윈도우 크기란?

세그먼트를 하나 보댈 때마다 확인 응답을 확인할 경우, 효율이 매우 떨어짐.
세그먼트를 연속으로 보내고 난 다음에 확인 응답을 반환하여 효율을 높임.
수신측에서 연속으로 받은 세그먼트를 일시적으로 저장하는 장소를 버퍼(buffer)라고 함.
수신 측이 세그먼트를 대량을 받아서 처리하지 못하는 경우 버퍼가 넘쳐버림. 오버플로(overflow) 발생.
따라서 오버플로가 발생하지 않도록 버퍼의 크기를 알고 있어야 함. TCP 헤더 중 윈도우 크기(window size) 값
윈도우 크기의 초기 값은 연결 확립 시(3-way handshake) 윈도우 크기를 함께 보냄으로서 판단.

LESSON 26. 포트 번호의 구조

포트 번호를 통해 어떤 애플리케이션으로 가는 데이터인지 식별 가능
0 - 1023 : Well-known ports
1024 : 예약되어있지만 사용하지 않는 포트
1025 - : 랜덤 포트, 클라이언트 측의 송신 포트로 사용.

애플리케이션포트 번호
SSH22
SMTP25
DNS53
HTTP80
POP3110
HTTPS443

동작하는 애플리케이션마다 각각의 포트 번호가 있어서, 다른 애플리케이션과 서로 구분됨. 데이터를 전송할 때 어떤 애플리케이션으로 데이터를 보낼지 구분하기 위해서는 포트번호 필요함.
웹 브라우저 접속 시 클라이언트 측 출발지 포트 번호는 임의로 할당된다.

LESSON 27. UDP의 구조

UDP란?

TCP와 달리 효율성에 초점을 맞추느 통신 프로토콜.

UDP 헤더

UDP의 경우 UDP와 데이터의 묶음을 데이터그램이라 부른다.

UDP를 사용할 경우, LAN에 속한 컴퓨터나 네트워크 장비로 데이터를 일괄로 보낼 수 있음. 이를 브로드캐스트(broadcast)라 한다.

참고 자료

https://www.howtouselinux.com/post/understanding-tcp-sequence-number/

profile
The best time to plant a tree was twenty years ago. The second best time is now.

0개의 댓글