[네트워크] 컴퓨터 네트워킹 하향식 접근
- 컴퓨터공학과/그외
- 2014. 4. 26.
<컴퓨터 네트워킹 하향식 접근 6판 1~3장 내용 요약 정리>
★ 호스트 = 종단 시스템 : 컴퓨터 네트워크에 연결된 모든 장치들
: 통신링크 + 패킷 스위치
★ 통신링크 - 동축케이블 / 광케이블 / 구리선 / 라디오 스펙트럼 등의 다양한 물리매체
☆ 한 종단 시스템이 다른 종단 시스템으로 보낼 데이터를 가지고 있을 때, 송신 종단 시스템은 그 데이터를 세그먼트로 나누고 각 세그먼트에 헤더를 붙인다. 이렇게 만들어진 정보패키지를 패킷이라 하며, 패킷은 네트워크를 통해 보내지고 목적지에서 다시 원래 데이터로 조립된다.
★ 패킷 스위치 : 입력 통신 링크의 하나로 도착하는 패킷을 받아서 출력 통신링크의 하나로 그 패킷을 최종 목적지 방향으로 전달한다. 링크 계층 스위치 & 라우터
★ 링크 계층 스위치 : 액세스 네트워크에서 사용됨
★ 라우터 : 네트워크 코어에서 사용
★ 경로 : 패킷이 송수신 종단 시스템에서 수신 종단 시스템에 도달하는 동안 거쳐 온 일련의 통신 링크와 패킷 스위치들을 네트워크상의 경로라고 한다(router or path).
★ 시스코Cisco
★ ISP(Internet Service Provider) : 패킷 스위치와 통신 링크로 이루어진 네트워크
-> 인터넷은 종단 시스템을 서로 연결하는 것이므로 종단 시스템에 접속을 제공하는 ISP들도 서로 연결되어야 함
★ TCP(Transmission Control Protocol)
★ IP(Internet Protocol) : 라우터와 종단 시스템 사이에서 송수신되는 패킷 포맷
★ TCP/IP : 인터넷 주요 프로토콜
★ IETF(Internet Engineering Task Force) : 인터넷 표준을 개발
★ RFC(Request For Comment) : IETF 표준 문서
★ 분산 애플리케이션 : 애플리케이션에 서비스를 제공하는 인프라 구조로서의 인터넷에서 애플리케이션들은 서로 데이터를 교환하는 많은 종단 시스템을 포함하고 있음 ex) VoIP, P2P, 분산 게임, 전자메일, 웹 서핑 등
☆ 인터넷 애플리케이션은 종단 시스템에서 수행된다. 패킷 교환기는 종단 시스템 간에 데이터 교환은 쉽게 해주나, 애플리케이션에는 관심을 갖지 않는다.
★ API(Application Programming Interface) : 인터넷에 접속된 종단 시스템들은 한 종단 시스템에서 수행되는 프로그램이 어떻게 인터넷 인프라 구조에게 다른 종단 시스템에서 수행되는 특정 목적지 프로그램에게 데이터를 전달하도록 요구하는지 명시. 송신 프로그램이 따라야 하는 규칙의 집합이며 인터넷은 이 규칙에 따라 데이터를 목적지 프로그램으로 전달하게 됨
★ 프로토콜 : 둘 이상의 통신 개체 간에 교환되는 메시지 포맷과 순서뿐 아니라, 메시지의 송수신과 다른 이벤트에 따른 행동들을 정의한다.
★ 종단 시스템 : 인터넷의 가장자리를 차지하고 있음 ex) PC, 모바일 컴퓨터, 서버, 태블릿
= 호스트 : 웹 브라우저 프로그램, 웹 서버 프로그램, 전자메일 클라이언트 프로그램 또는 전자메일 서버 프로그램 같은 애플리케이션을 수행하므로 호스트라고도 부른다. 클라이언트와 서버로 구분된다.
★ 데이터 센터
<접속 네트워크 Access network:>
: 종단 시스템을 그 종단 시스템으로부터 다른 먼 거리의 종단 시스템까지의 경로상에 있는 첫 번째 라우터(=가장자리 라우터)에 연결하는 네트워크
- 가정접속 : DSL, Cable, FTTH
★ DSL(Digital Subscriber Line) : 광대역 가정 접속 유형. 지역 전화회사로부터 DSL 인터넷 접속 서비스를 받는다. DSL링크가 3개의 분리된 링크인 것처럼 보이게 하여 하나의 전화회선과 인터넷 연결이 동시에 DSL링크를 공유할 수 있게 한다.
★ 케이블 인터넷 접속 : 광대역 가정 접속 유형. 케이블 TV회사의 기존 케이블 TV 기반 구조를 이용하며 케이블 모뎀이 필요함
★ FTTH(fiber to the home) : 광대역 접속 중 보다 빠른 속도를 제공하는 미래 기술
- 기업(가정)접속 : Internet, Wi-Fi
★ LAN : 기업과 대학 캠퍼스에서 일반적으로 종단 시스템을 가장자리 라우터에 연결하기 위해 사용
★ 이더넷 : 여러 유형 LAN 기술 중 가장 널리 사용되는 접속 기술. 이더넷 스위치 혹은 상호 연결된 스위치들의 네트워크는 다시 더 큰 인터넷으로 연결된다.
★ WIFI(IEEE802.11) : 무선 LAN 환경에서 사용함
- 광대역 무선 접속 : 3G, LTE
★ 물리 매체 : 꼬임쌍선, 동축케이블, 광섬유, 지상 라디오 채널, 위성 라디오 채널
<네트워크 코어 Core Network>
- 인터넷의 종단 시스템을 연결하는 패킷 스위치와 링크의 메시
☆ 각 패킷은 통신 링크와 패킷 스위치(라우터와 링크 계층 스위치)를 거치게 된다.
★ 저장 후 전달 전송(store and forward transmission) : 스위치가 출력 링크로 패킷의 첫 비트를 전송하기 전에 전체 패킷을 받아야 함을 의미
★ 회선 교환(Circuit switching) : 필요한 자원은 통신 세션 동안에 예약되며 세션의 메시지는 그 자원을 요청하여(on-demand 방식) 사용하고 그 결과 통신 링크에 대한 접속을 위해 기다릴 수도 있다. 연결(회선) 유지 상태 ex) 전화망 - 예약을 요구하는 레스토랑!
-> 네트워크 다중화 : 링크 내 한 회선은 FDM(Frequency-Division Multiplexing, 주파수분할다중화) 혹은 TDM(Time-Division Multiplexing, 시분할 다중화)로 구현됨
★ 패킷교환 > 회선교환 : 1) 패킷교환이 회선 교환보다 전송 용량의 공유에서 더 효율적이며 2) 패킷 교환이 더 간단하고, 효율적이며, 회선교환보다 구현 비용이 적다
★ 프로토콜 스택 : 다양한 계층의 프로토콜을 모두 합하여 프로토콜 스택이라 한다.
★ DNS (Domain Name System) : 주소 심볼을 32비트 네트워크 주소로 변환하는 기능
☆ 메시지 - 애플리케이션에서의 정보 패킷, 세그먼트 - 트랜스포트, 데이터그램 - 네트워크, 프레임 - 링크
< 인터넷 프로토콜 스택 >
★ 트랜스포트 계층 : 클라이언트와 서버 간에 애플리케이션 계층 메시지를 전송하는 서비스 제공. TCP와 UDP.
★ 네트워크 계층 : 한 호스트에서 다른 호스트로 데이터그램을 라우팅. 출발지와 목적지 간의 일련의 패킷 스위치(라우터)를 통해 데이터그램을 라우트한다. IP, 라우팅 프로토콜
★ 링크 계층 : 경로 상의 한 노드(호스트 혹은 패킷 스위치)에서 다른 노드로 패킷을 이동하기 위해, 네트워크 계층은 링크 계층 서비스에 의존해야 한다. 전체 프레임을 한 네트워크 요소에서 이웃 네트워크 요소로 이동하는 것. 이더넷, 와이파이
★ 물리 계층 : 프레임 내부의 각 비트를 한 노드에서 다음 노드로 이동하는 것. 링크에 의존하고 링크의 실제 전송 매체(꼬임쌍선, 동축케이블 등)에 의존한다.
★ ISO(International Organization for Standardization)
★ OSI(Open System Interconnection)
★ 캡슐화 Encapsulation
☆ 패킷 : 헤더 필드 + 페이로드 필드(payload filed)
★ 페이로드 필드 : 일반적으로 그 계층 상위로부터의 패킷이다.
<애플리케이션 계층>
: 종단 시스템에서만 애플리케이션 소프트웨어가 존재한다는 기본 설계
: 클라이언트/서버 구조, P2P구조
★ 클라이언트/서버 구조(p78) ex) 웹, 파일 전송, 원격 로그인, 전자메일★ P2P구조 : 항상 켜져 있는 기반 구조 서버에 최소 의존. 대신에 애플리케이션은 피어(peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신. 특정서버를 통하지 않고 피어가 통신하므로 Peer to Peer 라고 한다. ex) 파일 공유, IPTV, 인터넷 전화
★ 클라이언트/서버 구조 + P2P 구조 ex) 인스턴스 메시징 애플리케이션
★ 프로세스 : 종단 시스템에서 실행되는 프로그램
★ 클라이언트 : 두 프로세스 간의 통신 세션에서 통신을 초기화(다른 프로세스와의 세션을 시작하려고 접속을 초기화)하는 프로세스
★ 서버 : 세션을 시작하기 위해 접속을 기다리는 프로세스
★ 소켓 : 호스트의 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스. 애플리케이션과 네트워크 사이의 API. 프로세스는 소켓을 통해 네트워크로 메시지를 보내고 받는다. 프로세스- 집, 소켓- 출입문
★ IP주소 : 32비트로 구성되며 호스트를 유일하게 식별함
★ 포트번호 : 한 호스트가 많은 네트워크 응용을 수행할 수 있기 때문에 목적지 포트 번호가 이 목적을 위해 사용됨
★ 전 이중 연결(full-deplex) 두 프로세스가 서로에게 동시에 메시지를 보낼 수 있음
★ TCP(Transmission Control Protocol) : 연결지향형 서비스와 신뢰적인 데이터 전송 서비스를 포함한다.
★ UDP(User Datagram Protocol) : 최소의 서비스 모델을 가진 간단한 전송 프로토콜
<애플리케이션 계층 프로토콜>
- 다른 종단 시스템에서 실행되는 애플리케이션의 프로세스가 서로 메시지를 보내는 방법정의
- HTTP(80), FTP(21), SMTP(25), DNS(53), P2P
★ 웹과 HTTP
1) on-demand 사용자는 그들이 원할 때 원하는 것을 수신한다.
2) 정보를 사용가능하게 하는 것이 쉽다. 하이퍼링크, 검색엔진 그래픽 등
★ HTTP(HyperText Transfer Protocol) : 웹의 애플리케이션 계층 프로토콜. TCP를 전송프로토콜로 사용함(TCP가 HTTP에게 신뢰적인 이터 전송 서비스를 제공함). HTTP 서버는 클라이언트에 대한 정보를 유지하지 않으므로 HTTP를 비상태 프로토콜이라고도 함
☆ 서로 다른 종단 시스템에서 수행되는 클라이언트 프로그램과 서버 프로그램은 서로 HTTP 메시지를 교환하여 통신한다. HTTP는 메시지의 구조, 클라이언트와 서버가 메시지를 어떻게 교환하는지에 대해 정의하고 있다.
★ 웹 브라우저 : HTTP의 클라이언트 측을 구현 ex) 인터넷 익스플로러, 파이어폭스
★ 웹 서버 : HTTP의 서버 측을 구현. 항상 켜져있고 고정 IP 주소를 가지며 다른 잠재적인 수백만 브라우저로부터의 요청을 서비스함 ex) 아파치, 마이크로소프트 서버
★ URL : URL은 객체를 갖고 있는 서버의 호스트네임과 객체의 경로 이름을 갖고 있다.
★ 비지속 연결 : 클라이언트/서버 상호작용이 TCP 상에서 발생할 때 각 요구/응답 쌍이 분리된 TCP연결을 통해 보내짐
★ 지속 연결 : 모든 요구와 해당하는 응답들이 같은 TCP 연결상으로 보내짐
★ 쿠키 : HTTP 서버는 상태를 유지하지 않지만 웹사이트가 사용자를 확인하는 것이 바람직할 때 사용함. 사이트가 사용자를 추적하도록 한다. [RFC 6265]
★ 웹 캐싱 : 웹 캐시 = 프록시 서버. 기점 웹 서버(origin web server)를 대신하여 HTTP 요구를 충족시키는 네트워크 개체이며, 자체의 저장 디스크를 갖고 있어 최근 호출된 객체의 사본을 저장 및 보존하도록 한다.
- 웹 캐시는 클라이언트의 요구에 대한 응답 시간을 줄일 수 있다.
- 웹 캐시는 인터넷으로의 기관 접속 회선상의 웹 트래픽을 실질적으로 줄일 수 있다.
- 웹 캐시를 가진 고밀도 인터넷은 비록 콘텐츠 제공자가 저속도의 접속 회선을 가진 느린 서버에서 자신의 사이트를 운영하더라도 빠른 콘텐츠 분배를 위한 기반구조를 제공한다.
★ FTP(File Transfer Protocol) :
HTTP와 공통점 : 모두 TCP 상에서 동작함
차이점 : 제어(파일을 보내고 가져오는 명령과 같은 정보) 연결, 데이터(실제 파일을 보냄) 연결을 동시 사용함 => 제어 정보를 아웃밴드(out-of-band)로 보냄 (HTTP와 SMTP는 in-band)
- 세션을 통해서 FTP 서버는 사용자에 대한 상태를 유지해야 함 (HTTP는 비상태유지 어플리케이션)
★ SMTP(Simple Mail Transfer Protocol) : POP3(Post Office Protocol version3)☆ 호스트를 식별하는 방법 - 호스트네임, IP주소. 호스트 네임은 위치정보를 거의 제공하지 않고 가변 길이의 알파뉴메릭 문자로 구성되므로 라우터가 처리하는 데 어려움이 있음
★ DNS(Domain Name System) : 호스트 네임을 IP 주소로 변환해주는 디렉터리 서비스
1) DNS 서버들의 계층 구조로 구현된 분산 데이터 서비스
2) 호스트가 분산 데이터베이스로 질의하도록 허락하는 애플리케이션 계층 프로토콜
☆ 단일 네임 서버 : 중앙 집중 방식. 1) 서버의 고장 2) 트래픽 양 3) 먼 거리의 중앙 집중 데이터베이스 4) 유지 관리 => 확장성이 전혀 없음. DNS가 분산되도록 설계 되었음
★ 분산 계층 데이터베이스 : 확장성 문제를 다루기 위해 DNS는 많은 서버를 이용하고 이들을 계층 형태로 구성하며 전 세계에 분산시킨다. (루트 DNS 서버, com - 최상위 레벨 도메인 네임(TLD : Top-Level Domain) DNS 서버, amazon.com - 책임 DNS 서버 => www.amazon.com의 IP주소를 알려줌)
☆ DNS 질의는 반복적(직접 보냄)이고 재귀적(자신을 대신하여 필요한 매핑을 얻도록 요구함)일 수 있다.
★ DNS 캐싱 : 지연성능 향상과 네트워크의 DNS 메시지 수를 줄이기 위해 캐싱을 사용함
- 네트워크 구조: 네트워크 시스템 구성요소에 대해 논의하기 위한 구조로서 고정되고 애플리케이션에 특정서비스 집합을 제공하는 것이다. 각 계층 간의 의사소통을 나타낸다.
- 애플리케이션 구조: 애플리케이션 개발자에 의해 설계되고 애플리케이션이 다양한 종단시스템에서 조직되는 방법을 알려주는 것이다. 제공자와 제공받는 측과의 관계를 나타낸다.
★ 트랜스포트 계층 프로토콜 : 서로 다른 호스트의 애플리케이션 프로세스들 간의 논리적 통신을 제공한다. 네트워크 라우터가 아닌 종단 시스템에서 구현된다. 종단 시스템 사이의 IP전달 서비ㅡ를 종단 시스템에서 동작하는 두 프로세스 간의 전달 서비스로 확장함. 호스트대 호스트 전달을 프로세스 대 프로세스 전달로 확장(다중화,역다중화)
★ IP 주소 : 호스트들 간에 논리적 통신을 제공하는 Best-effort delivery service 최선형 전달 서비스. 어떠한 보장도 하지 않음(전달 보장X, 순서보장X, 무결성 보장X) -> 비신뢰적인 서비스. 하나의 호스트는 적어도 하나의 IP주소를 가짐
★ UDP : IP와 같은 비신뢰적 서비스
1) 프로세스-프로세스 데이터 전달(다중화-역다중화) 2) 오류 검출
출발지 포트번호가 다를지라도 목적지 같으면(목적지 IP주소아 목적지 포트번호 같다면) 동일한 프로세스로 향함
★ 혼잡제어 : 과도한 양의 트래픽으로 통신하는 모든 호스트들 사이의 스위치와 링크를 폭주되게 하는 것을 방지하는 것. TCP 연결이 링크 대역폭을 공평하게 공유하여 통과하도록 해준다.
★ 역다중화 : 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업.
★ 다중화 : 소켓으로부터 데이터를 모아 세그먼트를 만든 후 네트워크 계층으로 전달하는 작업.
☆ UDP 사용이유 :
1) 애플리케이션 레벨이 데이터 송신에 대해서 정교한 제어를 할 수 있음
2) 연결 설정이 없다. 따라서 어떤 연결 지연도 없다
3) 연결 상태가 없다. 더 많은 클라이언트를 수용할 수 있음
4) 작은 패킷 헤더 오버헤드 (UDP - 8Byte, TCP - 20Byte)
★ 신뢰성 있는 데이터 전송 : 전달 보장O, 순서대로O
★ 완벽하게 신뢰적인 채널 상에서의 신뢰적인 데이터 전송 : rdt1.0
★ 비트 오류가 있는 채널 상에서의 신뢰적인 데이터 전송 : rdt2.0
-> 오류 검출(checksum), 수신자 피드백(ACK 긍정 확인응답, NAK 부정 확인응답), 재전송
★ rdt 2.1 :
- ACK 또는 NAK 패킷이 손상될 수 있음 -> ACK, NAK 패킷에 대한 체크섬 추가 필요
- ACK, NAK 패킷 오류로부터 복구 -> 중복패킷 전송 -> 중복 발생가능 : 순서번호 삽입
★ rdt 2.1 : NAK-free : NAK를 송신하는 것 대신에, 가장 최근에 정확하게 수신된 패킷에 대하여 ACK를 송신함으로써 NAK를 송신한 것과 같은 효과를 얻을 수 있음.
★ rdt 3.0 : 비트 오류와 손실 있는 채널 상에서의 신뢰적 데이터 전송 : 카운트다운 타이머
★ 파이프라이닝 : 확인 응답을 기다리지 않고 여러 패킷을 전송하도록 허용하는 것
- 파이프라이닝 오류 회복의 두가지 기본적인 방법 : N부터 반복, 선택적 반복
★ Go-Back-N, GBN : 전송 후 대기 프로토콜에서의 채널 이용률 문제를 피한다.
★ N 윈도우 크기 : 아직 확인응답 안 된 패킷을 위해 허용할 수 있는 순서 번호의 범위. 순서번호의 범위 상에서 크기. 이 윈도우는 순서번호 공간에서 오른쪽으로 이동된다. = Sliding window protocol
-> 수신자가 유지해야 하는 것은 단지 다음 순서 패킷의 순서번호! 하나의 패킷 오류 때문에 많은 패킷을 재전송함 -> 불필요
★ SR(Selective Repeat) : 선택적 반복 - 수신자에서 오류가 발생한 패킷을 수신했다고 의심되는 패킷만을 송신자가 다시 전송하므로 불필요한 재전송을 피한다.
☆ TCP - 종단 시스템에서만 동작, 전이중 서비스 제공, 단일 송신자-단일 수신자의 점대점 연결
★ MSS(Maximum Segment Size) : 최대 세그먼트 크기
★ TCP 세그먼트 구조 : 출발지/목적지 포트 번호, 순서번호, 확인응답번호, 헤더길이, 미사용, URG(긴급), ACK(확인응답 필드에 있는 값이 유용함), PSH(상위 계층에 즉시 전달해야함), RST, SYN, FIN,(연결 설정과 해제에 사용) 수신윈도우, 인터넷 체크섬, 긴급데이터 포인터, 옵션, 데이터
★ UDP 세그먼트 구조 : 출발지/목적지 포트번호, 길이, 체크섬, 메시지
★ RTT(Round-Trip Time) : 타임아웃은 연결의 왕복 시간보다 좀 더 커야 한다.
★ 흐름제어 : 송신자가 수신자의 버퍼를 오버플로우 시키는 것을 방지하기 위해 애플리케이션에게 흐름제어 서비스를 제공. 수신하는 애플리케이션이 읽는 속도와 송신자가 전송하는 속도를 같게 한다.
★ 수신 윈도우 : TCP는 송신자가 수신 윈도우라는 변수를 유지하여 흐름제어를 제공한다. 수신 측에서 가용한 버퍼 공간이 얼마나 되는지 송신자에게 알려주는 데 사용된다.
☆ UDP는 흐름제어를 제공하지 않음
☆ 3-way handshake
☆ 4-way handshake
★ ATM(Asynchronous Transfer Mode) : 비동기 전송 모드 - 네트워크-지원 혼잡제어 예
★ 혼잡윈도우 : TCP 송신자가 네트워크로 트래픽을 전송할 수 있는 비율을 제한하도록 함
☆ 혼잡이 존재하는지 감지 - 타임아웃, 3개의 중복된 ACK들의 수신
과도한 혼잡이 발생하면 경로하에 있는 하나 이상의 라우터 버퍼들이 오버플로우 되고, 그 결과 데이터그램이 버려진다. 버려진 데이터 그램은 송신 측에서 손실 이벤트(타임아웃 또는 3개의 중복된 ACK 수신)을 발생시키고 송신자는 송신자와 수신자 사이의 경로상의 혼잡이 발생했음을 알게 됨
★ TCP 혼잡제어 알고리즘 : TAHOE, RENO, VEGAS
★ 혼잡제어의 구성요소 : slow start, congestion avoidance, fast recovery
★ 슬로스타트 : cwnd 값을 1MSS에서 시작하여 한 전송 세그먼트가 확인응답을 받으면 지수적으로 cwnd 값을 증가시킨다. 타임아웃에 의한 손실 이벤트(혼잡)가 있을 때까지
★ ssthresh(slow start threshold) : 혼잡 검출 시 cwnd/2. cwnd와 ssthresh와 같을 때 슬로스타트가 종료되고 회피모드로 전환함
★ TCP TAHOE : 타임아웃으로 표시되거나 3개의 중복 ACK로 표시되는 손실이 발생하면 무조건 혼잡 윈도우를 1MSS로 줄이고 슬로 스타트 단계로 들어감
★ TCP RENO : 3개의 중복 ACK로 표시되는 손실이 발생하면 cwnd 값의 반으로 빠른회복 상태로 들어감. (타임아웃 시 tahoe와 같음)
★ AIMD(Additive-increase Multiplicative-decrease) : 처음에 패킷을 하나씩 보내고 이것이 문제없이 도착하면 창 크기(단위 시간 내에 보내는 패킷의 수)를 1씩 증가시켜가면서 전송하는 방법으로 TCP의 혼합 제어의 하나의 방식.
'컴퓨터공학과 > 그외' 카테고리의 다른 글
[WEKA] Waikato 대학의 Data Mining with WEKA 강의 수강하기 / Certification 받기(Feat. Prof. Ian Witten) (1) | 2014.05.09 |
---|---|
[기술혁명] 투명 디스플레이 (1) | 2014.05.01 |
[WEKA] WEKA Clustering (0) | 2014.03.05 |
[데이터마이닝] 빅데이터 OT강의 (0) | 2014.01.03 |
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우 (0) | 2013.12.20 |