본문 바로가기

백엔드/os 및 일반 지식

네트워크 - TCP와 UDP

반응형

2계층과 3계층은 목적지를 정확히 찾아가기 위한 주소 제공이 목적이었지만, 4계층에서 동작하는 프로토콜은 만들어진 목적이 2, 3계층 프로토콜과 조금 다르다. 

목적지 단말 안에어 동작하는 여러 애ㅐㅂ 프로세스 중 통신해야 할 목적지 프로세스를 정확히 찾아가고 패킷 순서가 바뀌지 않도록 잘 조합해 원래 데이터를 잘 만들어내기 위한 역할을 한다.

 

 

4계층 프로콜과 서비스 포트


- 인캡슐레이션, 디캡슐레이션 과정에서 헤더에서 가장 중요한 정보 2가지는

            각 계층에서 정의하는 정보

            상위 프로토콜 지시가 정보

 

- 상위 프로토콜 지시자는 디캡슐레이션 과정에서 상위 계층의 프로토콜이나 프로세스를 정확히 찾아가기 위한 목적으로 사용

- 2계층은 이더 타입, 3계층은 프로토콜 번호, 4계층은 포트 번호가 상위 프로토콜 지시자

- 일반적으로 TCP/IP 구조에서는 클라이언트-서버 방식으로 서비스를 제공하고 클라이언트용 프로그람과 서버용 프로그램을 구분해 개발

- 3계층의 프로토콜 번호나 2계층의 이더 타입과 같은 상위 프로토콜 지시자는 출발지와 도착지를 구분해 사용하지 않고 1개만 사용하지만 4계층 프로토콜 지시자인 포트번호는 출발지와 목적지를 구분해 처리해야 함. 

 

 

 

 

TCP


TCP 프로토콜은 신뢰할 수 없는 공용망에서도 정보 유실 없는 통신을 보장하기 위해 세션을 안전하게 연결하고 데이터를 분할하고 분할된 패킷이 잘 전송되었는지 확인하는 기능이 있음.

 

패킷에 번호를 부여, 전송되었는지에 대해 응답, 전송 크기까지 고려해 응답.

 

 

패킷 순서, 응답 번호


 

1. 출발지에서 시퀀스 번호를 0으로 보낸다.

2. 수신 측에서는 0번 패킷을 잘 받았다는 표시로 응답 번호 ACK 에 1을 적어 응답. 이 때 수신 측에서는 자신이 처음 보내는 패킷이므로 자신의 패킷에 시퀀스 번호 0을 부여

3. 이 패킷을 받은 송신 측은 시퀀스 번호를 1로 , ACK 번호는 상대방의 0번 시퀀스를 잘 받았다는 의미로 시퀀스 번호를 1로 부여해 다시 송신

 

 

윈도 사이즈와 슬라이딩 윈도


TCP는 패킷 전송 확인을 위해 ACK 번호를 확인하고 다음 패킷을 전송한다. 이는 응답을 기다리는 시간을 늘린다. 

따라서 많은 패킷을 한꺼번에 보내고 응답을 하나만 받는데, 가능하면 최대한 많은 패킷을 한꺼번에 보내는 것이 효율적이다. 따라서 적절한 송신량을 결정해야하는데 한 번에 데이터를 받을 수 있는 데이터 크기를 윈도 사이즈라고 하고 네트워크 상황에 따라 이 윈도 사이즈를 조절하는 것을 슬라이딩 윈도우라고 한다. 

 

3방향 핸드쉐이크


데이터가 버려지는 상황을 막기 위해 데이터가 안전하게 보내고 받을 수 있는지 확인하는 작업을 거친다. TCP에서는 3번의 패킷을 주고받으면서 서로 준비하므로 3방향 핸드쉐이크라고 한다. 

기존 통신과 새로운 통신을 구분하기 위해 헤더에 플래그라는 값을 넣어 통신

TCP 플래그의 종류

SYN, ACK, FIN, RST, URG, PSH

 

 

 

 

 

 

 

 

UDP


데이터 전송을 보장하지 않는 프로토콜

음성 데이터나 실시간 스트리밍과 같이 시간에 민감한 프로토콜이나 애플리케이션을 사용하는 경우, 증권 시세, 사내 방송 등이 예시.

TCP와 다르게 3방향 핸드쉐이크와 같이 사전에 연결을 확립하는 절차가 없다. 

대신 UDP에서 첫 데이터는 리소스 확보를 위해 인터럽트를 거는 용도로 사용되고 유실. 

그래서 UPD 프로토콜을 사용하는 애플리케이션 대부분 이런 상황을 인지하고 동작하거나 연결 확립은 TCP 를 이용, 애플리케이션 끼리 모든 준비를 마친 후 실제 데이터만 UDP를 이용하는 경우가 개부분

반응형