UDP(User Datagram Protocol)
- 데이터의 빠른 전달을 보장하기 위해 사용 된다.
- 빠른 속도 보장을 위해 대부분의 기능을 제한 한다.
- 비 신뢰성
- 비 연결 지향성
- 최소화된 Header
- 단편화 크기 -> 512bytes
- 재 전송 시 빠른 처리를 위하여 작은 단위로 데이터를 생성 한다.
UDP를 이용하는 Service 종류
- 빠른 통신 속도가 필요한 서비스 -> 실시간 통신, 음성 서비스에 많이 사용 된다.
- 정보 해석 및 전달 서비스
- DNS -> UDP 53, DHCP -> UDP 67(S)/UDP 68(C)
- 빠른 파일 전송
- TFTP -> UDP 69
UDP Header
- Header의 크기 -> (고정) 8bytes
- Source Port Address(2bytes)
- 출발지 서비스 주소(Port주소)
- Destination Port(2bytes)
- 목적지 서비스 주소(Port주소)
- Length(2bytes)
- Header + Payload 크기
- Checksum (2bytes)
- 4계층 Segment 전체와 3계층 정보 중 일부분에 대한 오류검사 값
- Pseudo header를 구성하여 오류 검출을 수행 한다.
Pseudo Header
- Layer 4의 오류검출
- 오류검출 용 임시 Header를 이용 -> Pseudo Header(12bytes)
- 보안, 기능성이 떨어지는 IP의 오류검출을 함께 수행한다.
- IP의 일정 정보를 포함한 헤더를 생성한 후 TCP/UDP Segment에 Encapsulation 후 오류검출 수행
- 초기상태의 checksum = 0
- 오류검출 값으로 획득한 후 Pseudo Header를 삭제 -> 실 통신에는 Segment만 전달 됨
TCP(Transmission Control Protocol)
- 데이터 전달의 신뢰성을 최대한 보장
- 연결 지향
- 데이터를 전달할 논리적인 연결을 먼저 구성 -> 3way Handshake
- 연결 설정 -> 데이터 전송 -> 연결 종료
- 신뢰성 보장
- 순차적으로 데이터를 전송 한다.
- 확인 응답 및 재전송을 한다.
- 흐름제어
- 데이터 전달에 지연 현상이 발생했을 때 데이터의 양을 조절 -> Sliding Window
TCP를 이용하는 Service 종류
- 정확한 데이터 전달이 필요한 대부분의 서비스
- 파일 전송 : FTP -> TCP 20(data), TCP 21(Control)
- WEB 서비스 : HTTP -> TCP 80
TCP Header
- Header 크기 -> Option필드의 크기에 따라 가변적으로 변한다. -> 최소 20byte ~ 최대 60byte
- TCP의 동작을 지시하는 메시지를 생성하여 연결상태를 제어 한다. -> TCP Flags
- 하나의 연결을 통해 한 단위의 Data(Application Data)를 전달한다.
0~4bytes Field
- Source Port Address(2bytes)
- 출발지 Port 주소
- Destination Port Address(2bytes)
- 목적지 Port 주소
5~12bytes Field
- Sequence Number(4bytes)
- 순서화된 일련번호
- 초기순서번호는 임의의 값으로 설정(ISN - Initial Sequence Number)
- 전송되는 데이터의 크기를 누적시키며 순서를 알려 준다
- Acknowledgment Number(4bytes)
- 확인 응답 번호
- 데이터를 정상적으로 수신한 뒤 예상하는 다음 Sequence Number를 알려 준다.
- 받은 Sequence Number + Payload 크기
- 최초 SYN에 대한 응답 : TNTLSGKS Sqence Number + 1
13~16bytres Field
- HLEN(4bits)
- TCP Header 길이 값
- 4개의 Bit로 표현되고 4bytes단위로 표시된다.(최대 길이 값 60bytes)
- Reserved(4bits)
- 예약된 Field
- TCP Flags(1byte)
- 논리적인 TCP 연결회선 제어 및 데이터 관리를 위해 사용
- TCP 메시지의 종류를 명시 한다.
- 1bit씩 메시지 종류가 지정되어 있고 해당 bit값이 설정되면 지정된 기능을 수행한다.
- TCP Flags 상세
13~16bytres Field
- Window (2bytes)
- 통신의 상대방에게 자신의 버퍼 여유용량 크기를 지속적으로 알려 준다.
- 능동적인 흐름제어를 위해 사용 된다.
- Sliding Window 기법을 사용한다.
17bytes~Valiable Field
- Checksum
- 4계층 Segment 전체와 3계층 정보 중 일부분에 대한 오류검사 값
- Pseudo Header 구성하여 오류 검출을 수행 한다.
- Urgent Pointer
- 긴급 데이터의 마지막 위치를 나타내는 값
- TCP Options
- 지정된 구조에 따라 옵션 설정
- Option 종류(1byte) + Option 길이(1byte) + Option Data
- TCP Options(0~40bytes)
- 기본적으로 필수 옵션이 사용 된다.
- type -> 옵션의 종류
- length(byte) -> 옵션 data의 크기
- option data -> 옵션 값
TYPE | name | Length | 의미 |
2 | MSS | 4 | Maximum Segment Size 현재 전달 받을 수 있는 버퍼의 여유 용량을 알림 TCP초기 최초에 한번만 전달되는 값(SYN) 최초 통신의 부하를 줄이기 위해 사용 된다. -> 일반적으로 처리 가능한 최소 단위의 크기를 알림 |
3 | Wscale | 3 | Window Scale Factor Window 필드로 표시할 수 없는 크기를 명시 한다. |
4 | SACK | 2 | Selective Acknowledgement data 선택적 확인응답 기능 지원 여부 |
5 | SACK data |
가변 | Selective Acknowledgement data |
3way-Handshake
- TCP 통신 시 상호간의 연결을 통해 신뢰성을 보장하기 위한 기법
- TCP segment를 전달하기 전 목적지와의 통신상태를 확인
- 정상 통신이 가능하면 논리적인 양방향 연결을 맺은 후 Segment를 전송
TCP 확인 응답
- 일반 확인 응답
- 출발지에서 Segment가 전달되면 반드시 목적지에서 전달 받았음을 확인 한다.
- 출발지는 목적지의 확인응답 TCP 메시지를 전달 받아야지만 다음 순서의 데이터를 전달 할 수 있다.
- Segment : ACK -> 1:1
- 누적 확인 응답
- TCP 연결 설정을 통해 한번에 보낼 수 있는 Segment의 양을 약속 한다.
- 출발지 에서는 지정된 양에 해당하는 Segment를 목적지의 확인응답이 없어도 계속 전달 한다.
- 목적지는 지정된 양의 Segment를 전달 받았을 때 하나의 확인응답을 전달 한다.
- Segment : ACK -> N:1
- 선택적 확인 응답
- 누적 확인응답의 문제점의 해결 -> 중간에 손실된 Segment가 발생하면 정상적으로 전달받은 Segment까지 재전송을 해야 한다.
- 누적 확인응답과 비슷하지만 확인응답을 할 때 재전송이 필요 없는 Segment의 정보를 알림으로 불필요한 재전송을 방지한다.
L4 Switch
- TCP/UDP port번호를 이용하여 트래픽을 서비스 별로 분류하여 포워딩하는 장비
- 주요 기능 -> Load Balancing
Load Balancing
- 부하 분산
- 특정 시스템이 받게 되는 부하를 동일한 기능을 수행할 수 있는 여러 시스템으로 분산
- Server Farm에서 필수적으로 사용하는 기능