트랜스포트 계층(Transport Layer)은 OSI(Open Systems Interconnection) 모델과 인터넷 프로토콜 스위트(TCP/IP)에서 네트워크 통신을 관리하고 제어하는 계층입니다. 이 계층은 소스 호스트와 대상 호스트 간의 데이터 전송을 제공합니다. 포트(port)와 관련된 계층입니다. 이때 쓰는 포트라는 용어는 라우터, 허브에 쓰이는 포트랑 다른 개념입니다.
1. 포트(Port)
트랜스포트 계층에서 포트란 특정 프로세스 또는 서비스를 식별하기 위한 논리적인 접속 지점입니다.
포토는 2^16으로 부호 없는 정수 0~65535번이 될 수 있습니다. ip주소 뒤에 :를 붙혀서 표현합니다. (10.0.0.1:8888)
2. TCP(Transmission Control Protocol)
트랜스포터 계층에서 사용되는 프로토콜 중의 하나로, 신뢰성있고 연결 지향적인 프로토콜입니다.
1) TCP 헤더
1.Source Port: 출발 포트
2. Desstination Port: 목적지 포트
3. Sequence Number: 데이터의 일련번호, 데이터가 무작위로 도착해도 이를 조합하여 원상복구
4. Acknowledgement Number: 자신이 다음에 받아야 할 상대의 Sequence Number
5. DO(Data offset): TCP헤더의 크기
6.RSV(Reserved): 필요할 때 대비해서 남겨둔 필드
7.NS~FIN: 컨트롤 플래그로, 혼잡 제어, 연결 끊기 등 제어를 위한 필드
8. Window size: TCP흐름 제어인 슬라이딩 윈도우 크기
9. Checksum: 데이터의 변조나 에러를 알아내기 위한 용도
10.Urgent Pointer: 컨트롤 플래그에서 URG가 1인 경우 작동, 상위 애플리케이션에서 이 포인터가 가리키고 있는 데이터를 우선적으로 처리 or 처리하지 않음
11. Options: TCP의 기능을 확장할 때 쓰임
2) 3 way handshake
데이터를 전송하기전, TCP에서 연결을 설정하는 과정입니다. 데이터의 신뢰성과 무손실을 보장하기 위해서 사용합니다.
1. 데이터를 보내기 전에 SYN(Synchronization)패킷을 보냅니다. 이때 TCP헤더 구조에서 syn패킷의 비트는 1입니다.
2. 상대방은 요청을 받는다는 응답으로 SYN-ACK(Acknowleggement)패킷을 보냅니다.이때 TCP헤더 구조에서 syn, ack의 비트는 1입니다.
3. 응답을 받으면 나도 ACK패킷을 보냅니다. 이때 TCP헤더 구조에서 ack패킷의 비트는 1입니다.
4. 3way handshake 이후에 데이터를 보냅니다.
이렇게 TCP 쓰리 핸드셰이크 과정을 통해 양쪽 호스트는 서로의 존재를 확인하고, 초기 시퀀스 번호를 교환하여 연결을 동기화합니다. 이 과정은 TCP 연결의 신뢰성과 데이터 순서의 정확성을 보장하는 데 중요한 역할을 합니다.
4) 4way handshake
TCP (Transmission Control Protocol)의 4-way handshake는 TCP 연결을 종료하는 과정에서 사용되는 프로토콜입니다. 이 과정은 네 개의 단계로 이루어져 있으며, 연결을 안정적으로 종료하기 위해 사용됩니다. 각 단계는 다음과 같습니다:
1. **FIN을 보내는 단계**: 연결을 종료하고자 하는 호스트가 FIN (Finish) 플래그가 설정된 패킷을 상대방에게 보냅니다. 이는 "나는 데이터 전송을 완료했다"라는 신호입니다.
2. **ACK를 받는 단계**: 상대방은 FIN 패킷을 받고, ACK (Acknowledgment) 플래그가 설정된 패킷을 보내어 FIN 패킷을 수신했음을 확인합니다.
3. **FIN을 보내는 단계**: 이제 상대방도 연결 종료 준비가 되면, 자신의 FIN 패킷을 보냅니다. 이는 상대방도 데이터 전송을 완료했으며 연결을 종료하고자 함을 나타냅니다.
4. **ACK를 받는 단계**: 처음 FIN 패킷을 보낸 호스트는 상대방의 FIN 패킷을 받고, 마지막으로 ACK 패킷을 보내어 연결 종료를 최종적으로 확인합니다.
이렇게 4-way handshake 과정을 통해 양쪽 호스트는 서로의 데이터 전송이 완료되었음을 확인하고, TCP 연결을 안정적으로 종료할 수 있습니다.
3. UDP(User Datagram Protocol)
UDP는 인터넷 프로토콜 스위트에 속하는 프로토콜 중 하나입니다. UDP는 데이터를 신속하게 전송하기 위해 설계된 비연결형 프로토콜로, 신뢰성보다는 속도와 간편함을 중시하는 특징을 가지고 있습니다. TCP와 달리 사전에 연결을 하지 않으며 데이터를 받았다는 확인 과정을 거치지 않고 일방적으로 데이터를 보냅니다.
따라서 동영상, 음성, 게임 같이 고속으로 처리하고 싶은 상황에서 UDP를 쓰며 신뢰성을 보장하고 싶다면 개발자가 직접 구현합니다.
1) UDP 헤더
1. Source Port: 출발 포트
2. Destination Port: 목적지 포트
3. UDP Length: UDP헤더, 데이터를 합친 값의 크기
4. CheckSum: 변조 여부 확인
5. Data: 상위 계층에서의 데이터
'컴퓨터 > 네트워크' 카테고리의 다른 글
네트워크 - DNS(Domain Name System) (0) | 2024.05.13 |
---|---|
네트워크 기초 - 네트워크(애플리케이션 계층) (0) | 2023.07.29 |
네트워크 기초 - 네트워크(네트워크 계층) (0) | 2023.07.23 |
네트워크 - 네트워크(물리, 데이터링크 계층) (0) | 2023.07.22 |
네트워크 - 네트워크(개요) (0) | 2023.07.07 |