29강 Section 19. TCP/IP(네트워크 계층 프로토콜)
- 전송 계층
> 연결형 : 패킷이 종송적으로 TCP
> 비연결형 : 패킷이 독립적으로 UDP
- 네트워크 계층
> 연결형 : 서로 다른 패킷이 동일한 경로 가상회선
> 비연결형 : 서로 다른 패킷이 상이한 경로 데이터그램 방식으로 IP
- UDP
> 사용자 데이터그램 프로토콜(UDP, user datagram protocol)은 비연결형이며 신뢰성없는 전송 프로토콜
> 작은 메시지를 송신하거나 신뢰성에 관하여 그다지 신경 쓰지않을 경우 UDP 사용
- UDP 서비스
> 프로세스:프로세스 통신으로 IP:포트(소켓 주소)를 이용하여 통신
> 비연결형 서비스를 제공
> 흐름제어가 없음 즉, 용량 커도 보냄
> 오류제어 메커니즘이 없음
> 혼잡 제어를 제공하지 않아 보통 실시간 Live로 보냄
> 다중화 및 역다중화 지원
- TCP
> UDP처럼 포트 번호를 사용하여 프로세스간 통신
> TCP 송/수신은 각각 버퍼가 있으며 두 버퍼는 TCP 흐름 및 오류 제어 기법에 사용됨
> 전이중 통신(full-duplex)로 세그먼트는 양방향으로 이동함
> 다중화 및 역다중화 지원
> 논리적인 연결통로를 통해 전송 순서를 보장(순서제어)하며 연결-지향 프로토콜
> UDP와는 반대로 신뢰성 있는 전송 프로토콜
- TCP와 UDP 비교
서비스 | TCP | UDP |
신뢰성 | 패킷이 목적지 도달했는 지 확인 및 패킷 도달 시 ACK를 수신하므로 신뢰성 있음 |
ACK보내지 않으며 목적지 도달 여부 확인하지 않으므로 신뢰성 없음 |
연결 | 연결지향적이므로 Hand-Shaking 수행 | 비연결지향적이므로 Hand-Shaking 수행안함 |
패킷 순서 | 패킷 내 순서번호를 사용하여 순차적으로 수신 | 순서번호 사용 안함 |
혼잡 제어 | 수신자는 송신자의 데이터가 많아 처리가 어렵거나 느려질 경우 송신자에게 이를 통보함 | 수신자는 송신자에게 흐름제어 하지 않음 |
사용 | 신뢰성 있는 전송 | 스트르밍 비디오 및 브로드 캐스트 등 빠른 처리 시 사용 |
속도와 오버헤드 | UDP보다 느림 | TCP보다 빠름 |
- TCP 패킷(세그먼트)
> Sequence Number : 임의의 번호로 시작
> 제어플러그 :
플래그 | 의미 | 설명 |
URG | 긴급 | 세그먼트 내 우선순위 높인게 있으며 긴급 포인터 필드로 활용 |
ACK | 승인 | 상대방으로부터 수신한 것에 대한 응답 |
PSH | 밀어넣기 | 세그먼트 받을 시 바로 어플리케이션단으로 송신 |
RST | 초기화 | 연결을 초기화 (강제) |
SYN | 동기화 | 순서 번호 동기화 및 연결 수립 요청 |
FIN | 종료 | 연결을 종료 (요청) |
- SYN 플러딩 공격
> 공격자가 희생자한테 SYN(SIP/DIP)을 보냄 (단, SIP는 존재하지 않음)
> 희생자는 존재하지 않는 SIP에 SYN, ACK를 송신함
> 공격자가 지속적으로 SYN을 보내 서비스 거부 공격을 일으킴
- 대응 방법
> TCP 연결 과정 대기시간을 줄임
> 방화벽에 동일 클라이언트IP에 대해 연결 요청(SYN) 임계치 설정
- 절반 폐쇄
> TCP에서 데이터 주고 받는 중 한쪽 끝은 데이터 전송을 중단 할 수 있으며 이를 절반 폐쇄라고함
> 절반 폐쇄 시 클라이언트는 서버한테 데이터X 응답 O 서버는 클라이언트 서버한테 데이터O