본문 바로가기

프로그래밍/이론정리

네트워크 이론정리

면접준비하면서 가물가물한 기억을 되살려보자!
일반네트워크 이론정리!!

간단하게 보고싶은 것만 살짝살짝 살펴봐야지~

1. OSI모델과 TCP/IP프로토콜
2. ARP
3. IP
4. UDP
5. TCP


[OSI모델과 TCP/IP프로토콜]
OSI모델 - ISO 표준으로 지정된 네트워크 설계모델로, 다른 시스템간의 원활한 통신을 위한 모델 제시! 포르토콜이 아니다!!
   Pear to Pear Process: 각 계층은 동일한 계층과 통신한다.
   7계층: (물리계층 - 데이터링크계층 - 네트워크계층) - (전송계층) - (세션계층 - 표현계층 - 응용계층)
      물리 - 패킷을 전달한다
      데이터링크 - 동일 네트워크상의 목적지로 전달한다
      네트워크 - 여러 네트워크를 거쳐 최종 목적지로 전달한다
      전송 - 패킷을 분할하고 재조립한다
      세션 - 대화제어, 동기화
      표현 - 변환, 암호화, 압축
      응용 - 어플리케이션, 사용자가 사용하는 계층

TCP/IP 프로토콜 - OSI이전에 개발된 프로토콜로 OSI에 비해 계층이 상호의존적이지 않고 5계층으로 이루어져 있다.
   5계층: 물리계층 - 데이터링크계층 - 네트워크계층 - 전송계층 - 응용계층
      네트워크 - IP(Internetworking Protocol)지원(IP는 ARP, RARP, ICMP, IGMP를 포함), Host-to-Host(장치간 전송)
         ARP - Address Resolution Protocol, IP주소로 물리주소를 찾는 프로토콜
         RARP - Reverse ARP, ARP의 역기능
         ICMP - Internet Control Message Protocol, 호스트와 게이트웨이가 데이터그램의 문제점을 알릴때 사용
         IGMP - Internet Group Message Protocol, 여러 수신자에게 동시에 메세지를 전송할때 사용
      전송 - UDP(User Datagram P)와 TCP(Trasmission Control P)를 지원, Process-to-Process(프로그램간 전송)
      응용 - OSI의 세션, 표현, 응용계층이 합쳐진 형태


[ARP]
ARP는 역할은 IP 패킷을 받으면 물리주소정보와 함께 데이터링크계층으로 전달하는 역할을 한다.
목적지의 물리주소를 알아내기 위해 ARP패킷이 사용된다.
ARP요청패킷에는 자신의 IP와 목적지의 IP, 자신의 물리주소정보를 담아 브로드캐스팅 한다.
ARP요청패킷을 받은 호스트나 라우터는 자신의 IP가 목적지라면 ARP응답패킷을 송신측에 전송한다.
ARP응답패킷에는 자신의 IP와 물리주소, 목적지의 IP와 물리주소 정보를 모두 갖고 있게 된다.

ARP패키지는 캐쉬테이블, 큐, 출력모듈, 입력모듈, 캐쉬제어모듈로 구성된다.
입력모듈은 ARP패킷을 수신하는 부분이다.
ARP패킷이 도착하면 캐쉬테이블을 업데이트하여 물리주소와 IP주소 정보를 보존하게 된다.
만일 ARP요청패킷이고 목적지 IP가 자신이라면 응답패킷을 전송한다.
테이블의 크기가 제한적이기 때문에 정보는 특정주기로 검사하여 타임아웃이 되면 사용되지 않는다.
출력모듈은 IP레이어에서 IP패킷을 전달받는 부분이다.
캐쉬테이블을 검사하여 물리주소정보가 없다면 IP주소별로 큐에 저장하고 ARP패킷을 발송한다.
다시 입력모듈이 ARP응답을 수신하면 캐쉬테이블을 갱신하고 큐에서 IP패킷을 꺼내 하위계층으로 전달한다.



[IP]
IP는 신뢰성이 없고 비연결형인 데이터그램 프로토콜로 최선의 노력을 하는 전달서비스이다.
하위계층에 대해 신뢰하지 않고 상위계층의 프로토콜보완으로 최선의 전달노력
송신측 IP의 주요 역할은 라우팅테이블을 사용하여 다음홉의 IP주소를 찾고,
MTU에 맞추어 데이터그램을 단편화하는 기능을한다.
즉, 전달가능한 적절한 크기로 나누고 전달해줄 주소를 찾는 기능을 한다.
수신측 IP의 주요 역할은 수신받은 데이터그램을 재조립하고 상위계층으로 전달하거나,
오류발생시 ICMP 오류메세지를 보낼 수 있도록 조치하는 기능을 한다.

네트워크상에서 데이터가 계속 남아있는 경우를 방지하기 위해 Time of Live를 설정하고,
check sum을 사용하여 데이터의 오류를 검출할 수 있다.
옵션기능을 사용하여 전달경로를 지정하거나 시간을 기록할 수도 있다.(네트워크 테스트나 디버그용)



[UDP]
전송계층의 프로토콜은 프로세스 대 프로세스의 통신을 생성하고, 흐름제어와 오류제어를 한다.
UDP는 최소한의 수준에서 수행하기때문에 흐름제어와 확인응답을 수행하지 않는다.
비연결형 신뢰성 없는 전송 프로토콜이기 때문에 최소한의 오버헤드만 요구될 경우 사용된다.
소켓주소 = IP주소 + 포트넘버 (*포트넘버는 프로세스를 찾는 기준이 된다)
하나의 사용자 데이터그램은 독립적으로 취급된다.



[TCP]
TCP는 흐름제어를 위해 슬라이딩 윈도우 방식을 이용한다.
오류제어를 위해 확인응답패킷, 시간-초과, 재전송 방식을 이용한다.
연결설정, 데이터 스트림 전송(세그먼트, 조립), 연결종료 지원
TCP는 연결지향의 신뢰성있는 전송 프로토콜이다.

연결 (three-way handshaking)
   1. 클라이언트가 SYN 세그먼트 전달 (ISP(Initialization Sequence Number) 전달)
   2. 서버가 SYN+ACK 전달 (ISP(Initialization Sequence Number), ACK 전달)
   3. 클라이언트가 ACK 전달

종료 (four-way handshaking)
   1. 클라이언트가 FIN를 전달
   2. 서버가 ACK를 전달
   3. 서버가 FIN를 전달
   4. 클라이언트가 ACK를 전달

슬라이딩 윈도우
   슬라이딩 윈도우는 송수신버퍼를 원형리스트처럼 사용하는 기법이다.
   송신될 데이터가 쓰여진 버퍼는 송신한 버퍼와 송신할 버퍼로 구분되고  송신한 버퍼는
   수신측의 확인을 통해 다음 송신 데이터를 위해 사용될 수 있다.
   송신측 슬라이딩 윈도우는 수신측의 처리속도, 네트워크의 혼잡도에 따라 흐름제어를 해야한다.
   수신측의 처리속도와 혼잡도에 맞춰 적절한 속도와 크기로 송신을 해야만 한다.
   Nagle 알고리즘과 재전송타이머, 혼잡위도우 등이 사용될 수 있겠다.
   수신측의 슬라이딩 윈도우가 꽉찼다가 1바이트씩 해소될 경우,
   1바이트씩 송신측에 알려주면 계속적으로 full과 1바이트 해소라는 어리석은 시드롬이 발생한다.
   수신 윈도우 문제는 Clark 해결방법이 있다.

확인응답과 재전송 타이머로 인해 대부분의 오류가 제어된다.



TCP/UDP 비교
UDP는 빠르고 간단하다는 장점이 있다. 비신뢰성과 전송크기의 제한이 단점이다.
TCP는 신뢰성(순서, 손실)있는 전송이며 크기제한이 없지만, UDP보다 느리다는 단점이 있다.






















'프로그래밍 > 이론정리' 카테고리의 다른 글

수식 표기법(postfix, prefix, infix)  (2) 2011.03.02
정렬알고리즘 정리  (0) 2011.03.01
운영체제 #4 - 메모리 관리  (0) 2010.11.15
운영체제 #3 - 교착상태  (0) 2010.11.06
운영체제 #2 - 스케줄링  (0) 2010.11.01