1. 4 계층: 전송 계층(Transport Layer)
- 네트워크 계층에서 패킷이 잘 도착했는지 확인
- 네트워크 계층은 패킷이 어디로 가야 할지 알려주는 이정표일 뿐, 패킷이 손상되었거나 유실되지 않았는지 등의 문제는 신경 쓰지 않음
- 지금까지 배운 1,2,3 계층을 통틀어서 해당 문제를 해결해 주는 계층은 없었음
- 데이터가 제대로 도착했는지 확인
- 데이터가 최종적으로 도착할 애플리케이션이 무엇인지 식별
- 도착할 애플리케이션이 무엇인지 식별한다는 것은 네트워크 데이터를 어떤 애플리케이션에서 최종적으로 해석하고 사용할지를 의미
- 여기서 데이터는 HTTP 요청일 수도 있고, FTP을 사용한 파일 다운로드 요청일 수도 있음
- 목적에 따라 두 가지 통신 방법이 존재
- 신뢰성/정확성: 데이터를 목적지에 문제없이 전달하는 방식 (연결형 통신)
- 연결형 통신은 상대방과의 통신 과정을 여러 번 확인하고 보내는 방식
- 효율성: 데이터를 빠르고 효율적이게 전달하는 방식 - UDP
- UDP는 별도의 확인 절차가 없기 때문에 스트리밍 방식과 같은 동영상 서비스에 유리
- TCP (Transmission Control Protocol)와 UDP (User Data Protocol)이 존재
- TCP (Transmission Control Protocol)
- 전송 제어 프로토콜
- 전송 계층에서 신뢰할 수 있고 정확한 통신을 제공하는 연결형 통신 프로토콜
- Segment 단위를 사용
- 포트번호라는 주소로 통신
- 이 포트번호는 최종적으로 어떤 애플리케이션으로 향하게 될지를 정해줌
- Source Port
- 송신자의 포트 번호
- Destination Port
- 목적지의 포트 번호
- 2 계층은 프레임 단위였고, 3 계층은 패킷 또는 데이터그램 단위였다면, TCP는 Segment라고 불리는 단위 값을 사용
- TCP는 이를 이용해 데이터가 손상되었거나 유실되었는지 확인
- 손상이나 유실되었다면 재전송 제어를 하게 됨
- Sequence Number
- 송신 측에서 수신 측에 이 데이터가 몇 번째 데이터인지를 알려주는 역할
- 해당 번호를 통해 수신 측은 원래 데이터의 몇 번째 데이터를 받았는지를 알 수 있음
- Acknowledgement Number
- 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할
- 받은 데이터의 다음 번호의 데이터를 요청하는 데 사용
- Offset
- TCP 헤더의 크기를 나타내는 값
- 데이터의 시작 위치
- TCP 헤더의 크기가 TCP가 끝나는 지점이므로 데이터의 시작 위치라고 볼 수 있음
- Reserved
- 차후의 사용을 위해 예약된 필드
- 항상 0으로 설정
- TCP Flags
- 세그먼트의 용도와 내용을 결정하는 플래그
- 총 8bit로 이루어져 있으며, 각각의 비트가 연결의 제어 정보가 기록
- TCP Connection (TCP Session)을 맺게 됨
- TCP Connection: TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로로 연결을 확인하고 데이터 전송
- Window
- 한번에 전송할 수 있는 데이터의 양
- 65535만큼의 값을 표현 가능하며, Byte 단위 전송
- 2의 16승
- 65535 Byte = 64KB
- Checksum
- 오류를 검출하는 값
- Urgent Pointer
- 긴급 포인터
- URG 플래그가 1이라면 수신 측은 이 포인터가 가리키고 있는 데이터를 우선 처리
- TCP Options
- 약 30개의 TCP options을 보유하고 있음
- 대표적으로 Window 필드의 사이즈를 늘릴 수 있는 옵션이 존재
3. 3-Way Handshake
- TCP 통신을 하기 전에 TCP Flags를 사용해 특별한 통신 과정을 거침
- 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환
- TCP Flags를 이용해 패킷 교환
- 1. SYN 요청
- 통신을 하기 위해 통신 대상에게 연결을 요청
- SYN Flags를 1로 설정한 후 전송
- 2. SYN + ACK 응답
- 이후 SYN 요청을 받은 대상은 SYN과 ACK Flag를 설정해 응답하여 연결을 허가
- 다시 요청자는 ACK를 설정하여 알겠다는 의미의 응답을 해주게 되면서 TCP Session이 확립
- 통신 대상은 요청 대상이 보낸 요청을 받고 허가 응답
- SYN, ACK Flags를 설정한 후 전송
- 3. ACK 응답
- 서버의 응답을 받은 클라이언트는 알겠다는 응답
- ACK Flag를 1로 설정한 후 전송하게 되면 TCP Session이 확립됨
4. 포트 번호(Port)
- 3 계층에서는 IP주소, 2 계층에서는 MAC 주소를 사용했다고 한다면, 4 계층에서는 포트 번호를 사용해 목적지까지 갈 수 있음
- 포트번호는 각 애플리케이션이 가지고 있는 번호로 애플리케이션을 구분하는 데 사용
- 4 계층에서 목적지와 출발지를 나타낼 때 사용하는 번호
- 각각의 포트 번호는 애플리케이션을 구분
- Source Port와 Destination Port는 각각 2 bye로 0번부터 65535번까지 표현 가능
- 잘 알려진 포트(Well-known port) 0~1023
- 주요 프로토콜이 사용하도록 예약
- 일반적으로 서버 측 애플리케이션에서 사용
- 등록된 포트(Registered Port) 1024~49151
- 1024: 예약되어 있지만 사용하지 않은 포트
- 1025 이상: 랜덤 포트라고 하여 클라이언트 측 송신 포트로 사용
- 동적 포트(Dynamic port) 49152~65525
- 동적으로 사용되는 포트
- SSH 22, SMTP 25, DNS 53, HTTP 80, HTTPS 443, POP3 110
5. UDP(User Datagram Protocol)
- UDP는 User Datagram Protocol로 TCP와 다르게 데이터를 효율적이고 빠르게 보낼 때 사용
- 데이터를 효율적으로 빠르게 보낼 때 사용
- 3-way Handshake의 과정이 존재하지 않음 (비연결형 통신이기 때문)
- 신뢰성, 정확성 떨어짐 but 효율성 증가
'정보보안 (기술) > 네트워크' 카테고리의 다른 글
네트워크 7. DMZ (0) | 2024.07.07 |
---|---|
네트워크 6. 네트워크 계층과 프로토콜(5) (0) | 2024.07.07 |
네트워크 4. 네트워크 계층과 프로토콜(3) ARP (0) | 2024.07.07 |
네트워크 3. 네트워크 계층과 프로토콜(2) 3계층 (0) | 2024.07.07 |
네트워크 2. 네트워크 계층과 프로토콜 (0) | 2024.07.07 |