■ TCP 세그먼트
- TCP/IP의 트랜스포트 계층에는 연결형 (Connection Oriented) 서비스를 제공하는 TCP 프로토콜과 비연결형(Connectionless) 서비스를 제공하는 UDP 프로토콜이 있다
- 연결형 서비스인 TCP는 트랜스포트 계층에서 종점 간의 연결 개설, 오류 발생 시 데이터 재전송, 패킷 전달순서 확인, 중복 패킷 제거, 흐름제어, 네트워크 오동작 시 보고 등을 제공하는 서비스이다
- 비연결형 서비스인 UDP는 위의 연결형 서비스를 제공하지 않고 단순히 패킷을 하나씩 목적지 주소로 전송만 한다. 따라서 UDP를 안정적으로 사용하려면 응용프로그램에서 데이터의 분실, 흐름제어, 오류 등을 처리해야 한다
※ 안정적인 데이터 전달을 필요로 하는 응용프로그램은 대부분 TCP를 사용하고 있고 어떤 응용프로그램은 UDP를 사용해야만 하는 경우도 있는데, 이러한 경우는 다음과 같다
- 응용프로그램이 UDP만을 사용하도록 작성되어 있는 경우
- 패킷을 방송(Broadcast) 또는 멀티캐스트 해야 하는 경우
- TCP 처리 오버헤드 때문에 TCP로 처리할 시간이 없는 경우 (실시간 서비스 등)
- TCP에서는 종단 간 연결 설정을 위하여 three-way handshake를 사용한다
필드명 | 길이 (비트) | 기능 | |
Source Port | 16 | 송신 측의 응용 프로세스를 구분하는 포트번호 | |
Destination Port | 16 | 수신 측의 응용 프로세스를 구분하는 포트번호 | |
Sequence Number | 32 | 송신된 데이터의 순서 번호 (바이트 단위) | |
Ack Number | 32 | 수신된 데이터 바이트 수 +1 (아래의 ACK=1일 때 의미가 있음) | |
Header Length | 4 | 헤더크기 (4바이트 단위)로 보통 5가 된다 | |
Code Bits | URG | 1 | 긴급 데이터임의 표시 (이때 Urgent Pointer 값이 유효하다) |
ACK | 1 | Ack용 데이터임을 표시 (이때 Ack Number 값이 유효하다) | |
PSH (PUSH) | 1 | 데이터는 버퍼링 없이 바로 윗 Layer가 아닌 7Layer의 으용프로그램으로 바로 전달됨. 가능한 빨리 응용프로그램에 버퍼링된 데이터를 즉시 전달할 것 | |
RST | 1 | 연결을 강제 종료할 때 사용한다 | |
SYN | 1 | 세션확립을 위해 연결 요청 시 사용되며, Sequence Number가 초기값임을 알린다 | |
FIN | 1 | 송신 측에서 더 이상 보낼 데이터가 없을 때(종료할 때) 전송된다 | |
Window | 16 | 흐름제어용 윈도우 크기 (바이트 단위) | |
Checksum | 16 | TCP PDU 전체와 IP계층의 헤더 중 후반부 12바이트(송ㆍ수신지 IP주소 등)에 대한 오류 검출코드 | |
Urgent Pointer | 16 | 긴급 데이터가 들어 있는 위치를 표시 |
■ 포트번호
- 포트번호는 응용서비스가 통신하기 위한 '논리적인 접속장소'
- 컴퓨터는 동시에 하나 이상의 프로그램을 실행하기 때문에 IP주소만으로는 특정 서비스에 접근 할 수 없다
- 포트는 1에서 65,535까지의 숫자로 표현되며, 각 포트는 특정 서비스에 할당될수 있고 포트를 통해 원하는 서비스에 접근할 수 있다
구분 | 포트 범위 | 설명 |
잘 알려진 포트 (Well known port) |
1~1023 | - TCP 또는 UDP에서 쓰이는 0번부터 65535번까지의 포트 중에서 IANA(Internet Assigned Number Authority)에 의해 할당된 0번부터 1023번까지의 포트이다 - well known port Nmber, 즉 잘 알려진 포트번호는 우리가 일반적으로 많이 사용하는 서비스의 포트번호들이라고 할 수 있다 - well known port는 0~1023이다. 즉 응용프로그램 개발자가 사용할 수 없는 영역으로 메이저 벤더들이 이미 약속해서 사용하는 것이다 |
등록된 포트 (Registered port) |
1024~49151 | - 서버 소켓으로 사용하는 영역 |
동적 포트 (Private port) |
49152~65535 | - 매번 접속할 때마다 포트번호가 동적으로 부여된다 - 또한 서버 소켓 포트로 사용할 수 없다 |
★ 잘 알려진 포트 (Well Known Port)
포트번호 | 서비스 | 설명 |
20 | FTP | - File Transfer Protocol-Datagram - FTP 연결 시 실제로 데이터로 전송한다 |
21 | FTP | - File Transfer Protocol-Control - FTP 연결 시 인증과 제어를 한다 |
23 | Telnet | - 원격지의 컴퓨터를 인터넷을 통해 접속하여 자신의 컴퓨터처럼 사용할 수 있는 원격접속 서비스 |
25 | SMTP | - Simple Message Transfer Protocol - 메일을 보낼 때 사용한다 |
53 | DNS | - Domain Name Service - 네트워크에서 도메인이나 호스트 이름을 숫자로 된 IP주소를 해석해주는 TCP/IP 네트워크 서비스 |
69 | TFTP | - Trivial File Transfer Protocol - FTP와 마찬가지로 파일을 전송하기 위한 프로토콜이지만, FTP보다 더 단순한 방식으로 파일을 전송한다. 따라서 데이터 전송 과정에서 데이터가 손실될 수 있는 등 불안정하다는 단점을 가지고 있다. 하지만 FTP처럼 복잡한 프로토콜을 사용하지 않기 때문에 구현이 간단하다 |
80 | HTTP | - Hyper Text Transfer Protocol - 웹 서비스를 제공한다 |
110 | POP3 | - Post Office Protocol - 메일 서버로 전송된 메일을 읽을 때 사용한다 |
111 | RPC | - Sun의 Remote Procedure Call - 원격에서 서버의 프로세스를 실행할 수 있게 한다 |
138 | NetBIOS | - Network Base Input Output Service - 윈도우에서 파일을 공유할 수 있게 한다 |
143 | IMAP | - Internet Message Access Protocol - POP3와 기본적으로 같으나 메일이 읽힌 후에도 서버에 남는다는 것이 다르다 |
161 | SNMP | - Simple Network Management Protocol - 네트워크 관리와 모니터링을 위해 사용한다 |
■ UDP 헤더 구조
- UDP(user Datagram Protocol)의 오버헤드는 TCP 보다 작다
- 송신지 및 목적지의 포트번호(16비트), 데이터그램 길이(16비트), Checksum 그리고 사용자 데이터로 구성된다
- UDP는 신뢰할 수 있는 종점 간 데이터 송ㆍ수신을 보장하지 않으므로 파일 전송, 메일 서비스 등에는 적합하지 않다
- 도메인 네임(Domain Name) 서비스나 time 서비스와 같이 한 패킷의 송ㆍ수신으로 어떤 서비스가 이루어지는 경우에 많이 사용된다
- LAN과 같이 전송 오류가 거의 없고 패킷의 전달 순서가 바뀌지 않는 환경에서는 TCP보다 처리 속도가 빠른 UDP가 유리할 수 있다
'정보보호론 > 네트워크 보안' 카테고리의 다른 글
IP 패킷, MAC 프레임 구조 (0) | 2020.09.13 |
---|---|
OSI 7 Layer와 TCP/IP (0) | 2020.09.12 |
네트워크 개요 (0) | 2020.09.12 |