공부/네트워크

네트워크 기초 5일차: 전송 계층

finding wangdo 2025. 2. 16. 22:55


휴가 나갔다 와서 오랜만에 네트워크 공부 시작.

 


전송 계층

오류 점검 기능과 컴퓨터가 데이터를 받을 경우 어떤 애플리케이션으로 전달해야 하는지를 식별하는 기능을 한다.

 

오류 점검 방법에는 3가지가 있다.

 

1. 혼잡 제어

네트워크로 들어가는 정보량을 조절해 네트워크가 혼잡해지지 않게 하는 방법이다. 수신자로부터 정상적인 ACK를 받으면 데이터 전송량을 점점 늘려가다가 타임아웃이 발생하면 데이터를 줄여서 발송한다.

 

2. 흐름 제어

3일차의 회선 제어랑 동일한 방식이다. ACK 메세지를 받은 후에야 다음 데이터를 보내는 식이다.

 

3. 오류 제어

- 확인 응답: ACK를 받지 못하면 오류로 판정한다.

- 시간 초과: 특정 시간 내 ACK가 없으면 오류가 있다고 판단한다. (ACK가 너무 늦게 올 때)


연결형 통신

데이터를 정확하게 전달하는 것을 목표로 한다. TCP 프로토콜을 사용한다.

 

비연결형 통신

효율적인 데이터 전송을 목표로 한다. UDP 프로토콜을 사용한다.


TCP Transmission Contorl Protocol

 

3방향 핸드셰이크 3 Way Handshake

TCP 프로토콜에서 사용하는 방법으로, 장치 간 서로 준비가 되었는지 확인하는 과정이다. 3단계의 과정을 거친다.

 

- 송신자가 수신자에게 SYN을 보낸다.

- 수신자가 SYN을 받으면 송신자에게 ACK과 동시에 SYN을 보낸다.

- SYN을 받은 송신자는 수신자에게 ACK을 보낸다.

 

 SYN(Synchronize Sequence Number)은 임의의 숫자로, 이 때 ACK은 SYN에 1을 더한 값이 된다. ACK(Acknowledgment)는 메세지를 잘 받았다는 응답을 뜻한다.

 

 

다음은 전송 계층에서 추가되는 헤더에 포함되는 정보들이다.

 

포트 번호

전송 계층이 어떤 애플리케이션과 통신하는지 식별한다고 했다. 이 식별을 포트 번호를 통해서 한다. 총 65,536개가 있다.

 

- 0~1023번: 잘 알려진 포트 well-known port로, 특정 쓰임을 위해 사용된다.

- 1024~49151번: 기관이나 기업들이 사용하는 사전 등록된 포트 registered port이다.

- 49152~65535번: 일반 사용자들이 자유롭게 쓸 수 있는 다이내믹 포트 dynamic port이다.

 

잘 알려진 포트는 다음과 같다.

출처: https://martinnoh.tistory.com/188

https://ko.wikipedia.org/wiki/TCP/UDP%EC%9D%98_%ED%8F%AC%ED%8A%B8_%EB%AA%A9%EB%A1%9D

 

TCP/UDP의 포트 목록 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 잘 알려진 포트(well-known port)는 특정한 쓰임새를 위해서 IANA에서 할당한 TCP 및 UDP 포트 번호의 일부이다. 일반적으로 포트 번호는 다음과 같이 세 가지로 나눌

ko.wikipedia.org

위키피디아에서 더 자세한 목록을 볼 수 있다.

 

일련번호

송신자가 수신자에게 보내는 데이터가 몇 번째인지 알려주는 번호이다.

 

확인 응답 번호

수신자가 몇 번째 데이터를 받았는지 송신자에게 알려주는 번호이다.

 

윈도우 크기 Window Size

송신자가 한 번에 보낼 수 있는 데이터의 최대 크기이다. 수신자가 얼마나 데이터를 받을 수 있는 지 확인한 후 크기를 고려해 데이터를 보내기 위해 있는 정보이다.3방향 핸드셰이크 과정에서 SYN, ACK을 주고받을 때 윈도우 크기도 같이 주고받는다.

 

코드 비트

기본값은 0이고 활성화되면 1이 되는 값으로, TURG, ACK, RSH, RST, SYN, FIN 등이 있다.


UDP User Datagram Protocol

UDP 방식은 TCP와 달리 오류를 제어하지 않고 데이터를 보내기만 한다.

출처: https://velog.io/@jjo3ys/2.3.2-%EC%A0%84%EC%86%A1%EA%B3%84%EC%B8%B5-tcp-udp-zbxef4i1

 

신뢰성을 보장하지 않는 대신 데이터 전송 속도가 빠르다는 장점이 있어 실시간 방송 등에 주로 사용된다.

 

다음은 UDP 방식에서 헤더에 포함되는 정보들에는 송/수신자 포트 번호, 헤더 길이, 검사합 정도뿐이다.


로드 밸런서 Load Balancer

한 서버에 사용자가 몰려 정상적으로 서비스되지 않는 것을 막기 위해 여러 대의 서버를 두고 사용자를 분산시켜주는 장치이다. 

 

스케일 아웃

1대의 서버에서 여러 대로 늘리는 것을 말한다.

 

로드 밸런싱

부하를 분산시켜주는 작업을 말한다. 방식은 여러 가지가 있다.

 

- Round Robin : 서버 별로 순서대로 돌아가면서 하나씩 처리를 한다.

- Weighted Round Robin : 라운드 로빈 방식이지만, 일부 서버는 큰 트래픽을 몰아 받는다.

- 랜덤 : 무작위로 분배한다.

- 해시 : 특정 클라이언트를 특정 서버에서만 처리하는 방식이다. 이를 테면, 포트 번호별로 전달되는 서버를 다르게 할 수 있다.