반응형

# ICMP(Internet Control Message Protocol)

- 문제를 해결하는 기능과 전달할 수 없는 패킷에 대한 에러정보를 알리기 위해 사용

- ICMP 오류 보고 메시지 : 라우터/호스트에서 IP 패킷 전달에 문제 발생시 사용

목적지 도달 불가 메시지(Destination Unreachable Msg) : 패킷이 중도에 폐기될 때
시간 초과 메시지(Time Exceeded Msg) : 패킷이 목적지에 전달되기 전에 시간 초과로 폐기될 때
파라미터 문제 메시지(Parameter Problem Msg) : 패킷 헤더 부분에 문제가 발생한 경우
근원지 억제 메시지(Source Quench) : 호스트에게 IP 데이터그램이 라우터 집중현상으로 손실되고 있음을 알릴 때(패킷 흐름을 위해 사용)
재지정 메시지(Redirection Msg) : 동일 네트워크의 다른 라우터로 라우팅하는 것이 효율적이라 판단되면, 라우팅 경로를 변경하도록 사용

- ICMP 쿼리 메시지 : 네트워크 상황 파악을 위해 사용. 기본적으로 ICMP 오류 메시지와 동일한 포맷을 사용하지만 메시지 의존 필드를 식별자와 순서 번호 필드로 나누어 사용

에코 요청과 응답 메시지(Echo Request&Reply) : 두 호스트 사이에 통신이 가능한지 검사할 때
타임스탬프 요청과 응답 메시지(Timestamp Request&Reply) : 패킷 전송시간 측정 메시지
주소 마스크 요청과 응답 메시지(Address Mask Request&Reply) : 호스트가 서브넷 마스크 값을 얻을 때
라우터 요청과 광고 메시지(Router Solicitation and Advertisemetn) : 호스트가 네트워크 정보를 알고 싶을 때

- 2 바이트 체크섬 요소는 ICMP 패킷이 변조/수정 없이 도착되었음을 보장한다. 체크섬은 RFC 792에서 정의된 알고리즘을 사용하여 패킷의 ICMP 영역에서만 계산된다. 값이 계산될 때 체크섬 필드는 0으로 설정된다.

- ICMP 오류메시지가 생성되지 않을 때

특별한 주소를 가진 데이터그램
멀티캐스트 주소를 가진 데이터그램
ICMP 오류 메시지를 전달하는 데이터그램
처음 단편이 아닌 단편화된 데이터그램

# ARP(Address Resolution Protocol), 주소 결정 프로토콜

- IP 주소를 물리적 네트워크 주소(MAC)으로 대응시키기 위해 사용되는 프로토콜

# IGMP(Internet Group Management Protocol)

- IP 멀티캐스트를 실현하기 위한 통신 규약

- RFC 1112에 규정되어 있음

- IP 멀티캐스트 그룹에서 호스트 멤버를 관리하는 프로토콜로 사용. 그룹 탈퇴, 추가, 삭제 등을 동적으로 수행하기 위한 프로토콜

# TCP(Transmission Control Protocol), 전송제어 프로토콜

- 신뢰할 수 있는 연결 지향의 전달 서비스. 3-way 핸드쉐이킹.

- 데이터는 세그먼트 단위로 전송. 모든 세그먼트에 순번을 지정하여 신뢰성 확보

- 각 세그먼트를 전달받은 호스트는 반드시 ACK를 정해진 시간 안에 리턴해야. ACK가 없으면 데이터는 다시 전송된다.

- TCP 프로토콜의 타이머

RTT(Round Trip Time) 패킷이 송신 측에서 전송되어 수신 측에 전달되었다가, 다시 송신 측에 도달하기까지의 시간
RTO(Retransmission TimeOut) 재전송을 위한 타임아웃. ACK를 제대로 받지 못하면 일정 시간 후 재전송함. 동적으로 변함
Fast Retransmission 특정 데이터 세그먼트에 대해 타임아웃 되기 전에 그 세그먼트를 재전송해달라는 ACK 3개가 연속 수신되면 타임아웃을 기다리지 않고, 해당 세그먼트를 즉시 재전송.

- 플래그 비트

URG 긴급 세그먼트에 우선순위가 높은 데이터 존재
ACK 승인 세그먼트가 승인 포함. 승인번호 필드값은 세그먼트 목적지가 다음에 보내야 할 순서 번호를 의미
PSH 밀어넣기 세그먼트를 받는 즉시 애플리케이션으로 송신하란 의미
RST 초기화 송신 장비에 문제가 발생했으니 연결을 초기화하란 의미
SYN 동기화 순서 번호를 동기화 하고 연결 수립을 요청. 순서 번호 필드는 세그먼트를 송신하는 장비의 ISN
FIN 종료 세그먼트 송신 장비가 연결 종료를 요청

- 3way 핸드셰이킹 과정에서 SYN 세그먼트, SYN+ACK 세그먼트는 데이터 전달은 없지만 하나의 순서 번호 소비. ACK 세그먼트는 데이터를 전달하지 않는 경우 순서 번호를 소비하지 않는다.

- 혼잡 제어 알고리즘

혼잡 회피(Avoidance) 조심스럽게 혼잡 윈도우 크기를 확대시킬 필요가 있을 때. 중복된 확인 메시지를 통해 네트워크 혼잡이 감지되거나 수신 확인 타이머가 만료된 경우 복구 절차의 일부분으로 요구
충돌 감지(Detection) 충돌이 일어나면 cwnd가 줄어들며, slow start threshold 값도 반으로 줄어듦
느린 시작(Slow Start) 송신자 측에서 cwnd를 사용하여, 연결 초기에는 1로 설정하고 수신자 측으로부터 ACK를 받기 전까지는 한 개의 패킷만 송신이 가능한 상태. 이후 전송한 패킷에 대해 ACK를 받으면 cwnd 값을 2로 증가시킨다. 링크 전송속도가 포화될 때까지 cwnd 값이 기하급수적으로 증가하며, 재전송 발생시 cwnd 값을 다시 2로 조정하여 혼잡 회피 알고리즘을 수행한다. 송신자 측에서 네트워크 상태에 따라 흐름 제어 가능

- TCP/IP 소켓 프로그래밍

1. socket() : TCP 소켓 생성
2. bind() : 소켓에 포트번호 부여
3. listen() : 클라이언트 접속 대기
4. 클라이언트 접속 시 accept() 호출 : 클라이언트 연결에 대한 새로운 소켓 생성
5. send() & recv() : 서버 소켓-새 클라이언트 소켓 간 데이터 송수신
6. close() : 연결 종료

# UDP(User Datagram Protocol), 사용자 데이터그램 프로토콜 

- 여러 개의 프로세스로부터 전송되는 사용자 데이터그램 처리를 위해 다중화 기법(Multiplexing) 사용. 다수의 프로세스로부터 메시지를 받아들여 각 프로세스마다 할당받은 포트번호를 UDP 헤더에 붙여 IP 계층으로 전달.

* 역다중화 : 수신한 데이터그램의 오류를 검사하여 오류가 없으면 UDP 헤더의 수신자측 포트번호 필드 값을 통해 적절한 상위 프로세스로 메시지 전달

반응형

+ Recent posts