• Network Layer
    : transport segment를 발신 호스트에서 수신 호스트까지 보냄
    : sending side는 transport layer에서 segment를 받아 datagrams을 캡슐화
    : receiving side는 transport layer로 datagrams에서 segment를 추출하여 전달
    : 모든 호스트와 라우터에 network layer protocols 내장 
    : 라우터는 입력 링크의 IP datagrams의 헤더 필드를 조사하여 출력 링크로 전달



  • 네트워크 계층의 연결형 및 비연결형 서비스
    - 데이터그램 네트워크(datagram network)는 네트워크 계층에서 비연결형 서비스만 제공
    - 가상회선 네트워크(virtual circuit network)는 네트워크 계층에서 연결형 서비스만을 제공
    - 트랜스포트 계층 서비스와 유사하지만 네트워크 계층 서비스는 다음과 같은 차이
     : 호스트 사이의 서비스
     : 연결형이나 비연결형 서비스 하나만 제공
     : 종단 뿐만 아니라 네트워크 코어의 라우터에서도 구현

  • Two Key Network-Layer Functions
     
    - Forwarding
     : 라우터의 입력 포트에서 출력 포트로 패킷을 이동시키는 것
     : 한 교차로를 지나가는 과정
     : 32비트 IP 주소는 40억개 이상의 주소를 가지므로 라우터 포워딩 테이블이 목적지 주소마다 하나의 엔트리를 갖는다면 아주 큰 테이블이 필요

    - Routing
     : 패킷의 출발지에서 목적지까지의 경로를 얻어내는 것
     : 출발지에서 목적지까지 여행을 계획하는 과정
     ■ 라우팅 알고리즘
      : 링크 상태 라우팅 알고리즘

      

     : 거리 벡터 라우팅 알고리즘
      

     : 계층적인 라우팅
        : 모든 라우터가 동일, 하나의 네트워크로 이상적인 환경으로 가정했지만, 실제는 6억개 이상의 호스트로 인해 확장이 어렵고, 여러 조직의 네트워크가 존재하여 관리 자치권부여에 어려움음 겪음
        

  • Router Architecture Overview

    - Two key router functions
     : 라우팅 알고리즘/ 프로토콜 수행(RIP, OSPF, BGP)
     : 입력 링크를 출력 링크로 포워딩
     

    - Input Port Functions

       


    - Switching Fabric
     
     : memory? 1 세대 라우터, 메모리 대역폭에 따라 속도 제한
     : bus? 버스의 대역폭에 따라 스위칭 속도 제한
     : crossbar? 버스의 대역폭 한계를 극복

    - Output Port Functions


  • IP: Internet Protocol
    - 호스트, 라우터의 네트워크 계층 기능

     

    - IP datagram format
     

    - IP 단편화와 재결합
       

    - IPv4 addressing
         

      ■ Subnet

       

      ■ CIDR(Classless Interdomain Routing)
        : /23, 상위 23비트가 서브넷 주소
      

      ■ DHCP(Dynamic Host Configuration Protocol)
        : 호스트가 네트워크에 접속할 때 서버로부터 IP 주소를 동적으로 획득
        : 네트워크에 연결되었을 때만 주소를 가지므로 주소의 재사용 가능
        : 짧은 시간 동안에 네트워크에 연결되는 모바일 사용자 지원
        : 플러그 앤 플레이 (plug-and-play) 프로토콜
        : 할당된 서브넷 IP 주소 외에 첫 번째 홉 라우터의 주소, DNS 서버의 이름과 IP 주소, 네트워크 마스크 (주소에서 네트워크 호스트의 부분을 표시)

         
              

      ■ ICANN(Internet Corporation for Assigned Names and Numbers)
        : ISP가 주소 블록을 획득받는 곳
        : [RFC 2050]을 기반으로 IP주소 할당
        : DNS 관리, 도메인 이름을 할당하고, 도메인 이름 분쟁 해결

      ■ NAT(Network Address Translation)
       : 지역 네트워크는 외부 세계에로는 하나의 IP 주소만을 사용
       : 모든 디바이스에 대해 하나의 IP 주소만을 사용하여, ISP로 부터 여러 개 주소를 할당 받을 필요 없고, 디바이스의 주소를 변경하지 않고 ISP를 바꿀 수 있음
       : 지역 네트워크 내부의 디바이스들은 외부 세계에서 명시적으로 주소지정을 하거나 노출되지 않음 (보안 이점)

       : 16 비트 포트번호 단일 LAN 측 주소로 6만개 동시 연결
       : 포트번호는 호스트 주소 지정이 아닌 프로세스 주소 지정에 사용되어야 함
       : 라우터는 계층 3까지만 처리해야 함
       : 종단 간의 논의에 위반, 호스트가 IP 주소와 포트번호 수정 없이 직접 통신해야 함

       : 주소의 부족은 IPv6로 해결
       : 횡단 문제 해결로 정적 구성, UPnP, 릴레이
       

         

    - ICMP(Internet Control Message Protocol) 
     : ICMP는 호스트와 라우터 사이에서 네트워크 계층 정보를 통신하기 위해 사용 (오류 보고, 반향 요청/응답)
     : IP 상위 계층으로 ICMP 메세지는 IP 데이터그램의 페이로드로 전송

    - IPv6
     : 32 비트 IP 주소 공간이 빠른 속도로 고갈로 인한 등장
     : 빠른 처리와 포워딩을 지원하는 헤더 포맷, QoS가 용이한 헤더
     ■ IPv6 datagram format
       : 고정된 길이의 40바이트 헤더
       : 단편화(fragmentation)를 허용하지 않음
       : 2128 개로 거의 무한대에 가까운 주소 갯수

        


    - IPv4 vs IPv6
      : 체크섬 제거 -> 각 홉에서의 처리 시간 줄임
      : 옵션 제거 -> 더 이상 표준 IP 헤더 필드가 아닌 IPv6 헤더의 '다음 헤더' 중 하나가 될 수는 있음
      : ICMPv6 -> ICMP의 새로운 버전으로 추가적인 메시지 타입, 코드, 멀티 캐스트 그룹 관리 기능 추가
      : IPv4 -> IPv6로의 전환? 모든 라우터들을 동시에 업그레이드 할 수 없음 -> 터널링을 통해 해결
     ■ 터널링
        
     

  • Routing in the Internet
    : 내부 게이트웨이 프로토콜(Interior Gateway Protocols, IGP)
    - RIP
     : 라우팅 정보 프로토콜(Routing Information Protocol)
     : 거리 측정 (비용 측정) - 홉(hop)의 수, 최대 홉은 15로 제한, 각 링크 비용은 1
     : RIP 라우팅 테이블은 routed(데몬)라는 애플리케이션 계층 프로세스로 구현, 광고는 UDP 패킷으로 주기적으로 반복 전송
      

    - OSPF
     : 개방형 최단경로 우선(Open Shortest Path First)
     : "open"은 라우팅 프로토콜이 공용으로 사용 가능함을 의미, RIP는 주로 하위 계층 ISP나 기업 네트워크 구축에 사용되는 반면, OPSF는 상위 계층 ISP들이 사용
     : 링크 상태의 다익스트라 최소비용경로 알고리즘, 각 노드는 전체 AS의 토폴로지 맵을 가짐
     : OSPF 광고는 인접한 라우터뿐만 아니라 모든 라우터에 라우팅 정보를 브로드캐스트, 링크 상태 정보를 플러딩, TCP나 UDP가 아닌 IP 상에서 직접 OSPF 메시지를 전송
     : RIP에 없는 특징으로 보안, 여러 동일 비용 경로, 여러 비용 측정값, 유니캐스트와 멀티캐스트 통합 지원, 단일 라우팅 도메인에서의 계층 지원

    - IGRP
      : 내부 게이트웨이 라우팅 프로토콜(Interior Gateway Roution Protocol, IGRP), Cisco사 전용

    - BGP
     : 사실상의 인터넷 표준인 인터-AS 라우팅 프로토콜, Border Gateway Protocol
     : 각 AS에게 이웃들로부터 서브넷 도달성 정보, AS 내부의 모든 라우터에게 도달성 정보 전파, 도달성 정보와 AS정책에 근거하여 서브넷으로의 '좋은' 경로 결정
     : 각 서브넷이 자신의 존재를 외부 네트워크로 광고 하도록 함 "I am here"
     : TCP를 사용하여 BGP 메세지 교환 (OPEN, UPDATE, KEEPALIVE, NOTOFICATION)

       
      

  • 브로드캐스트와 멀티캐스트 라우팅
    - 브로드 캐스트
       

    - 멀티캐스트
     


'Major > Network' 카테고리의 다른 글

네트워크 - 총 정리  (0) 2015.12.18
네트워크 - Link Layer  (0) 2015.12.17
네트워크 - Transport Layer  (0) 2015.12.09
네트워크 - Application Layer  (0) 2015.12.02
네트워크 - 기본  (0) 2015.12.01
  • Transport services and protocols
    : 서로 다른 호스트의 프로세스간 논리적인 연결 제공
    : 종단 시스템 간에 동작하는 첫번째 layer
    : send side에서 app msg를 segment로 쪼개 network layer로 전송
    : receive side에서는 segment를 message로 재조립하여 application layer로 전송



    - Transport vs. N
    etwork layer
    : Transport는 프로세스간 논리적인 연결
    : Network는 호스트간 논리적인 연결

  • TCP vs. UDP
    : 두 프로토콜 모두 delay, bandwidth guarantees 이용 불가
    : 많은 application들은 하나의 transport layer protocol을 사용하므로 Multiplexing and Demultiplexing이 필요함

    - TCP(Transmission Control Protocol)
     : 신뢰성, 메세지 순서 보장
     : 연결성(발신자 수신자간 handshaking)
     : point-to-point
     : full duplex (전이중 방식), 하나의 Connection에서 양쪽으로 데이터 흐름
     : 혼잡 제어, pipelined(window size로 혼잡 및 흐름 제어)
     : send & receive buffers
     : HTTP, FTP, SMTP, Telnet 등에 사용


                        TCP segment structure



    ■ 3-hand-shaking 



    ■ 4-hand-shaking



    - UDP(User Datagram Protocol)
     : 비신뢰성, 메세지 비순서
     : 비연결성(발신자와 수신자간의 handshaking 없이 port만으로 소켓 구별, no-frills extension of “best-effort” IP)
     : 설계방식에 따라 full duplex, half duplex (반이중 방식)
     : reliability를 application layer상에 추가(RUDP)할 수 있지만 app-specific error만 복구 가능
     : RTT가 너무 짧으면 불필요한 재전송 발생, RTT가 너무 길면 느린 reaction과 segment 손실 가능성
     : RIP(Routing Information Protocol), DNS, NFS(Network File System), SNMP(Simple Network Management Protocol)등에 사용

     
                        UDP segment structure

      ■ Checksum
        : segment의 에러 체크
        : header + data + pseudo-header의 sum의 16 bit-one's complement 값
        : 모든 Data값과 checksum값을 더했을 때 모든 bit가 1로 채워져있다면 에러가 없음을 의미, 에러가 검출되면 해당 segment는 버려짐
       


     

  • Multiplexing and Demultiplexing


    Demultiplexing
      : host는 IP datagrams을 받음(IP와 PORT로 적합한 소켓을 구별)
       : 각 datagram은 source IP address, destination IP address를 가짐
       : 각 datagram은 1 transport-layer segment를 가짐
       : 각 segment는 source, destination port를 가짐



     1. Connectionless demultiplexing
      

    2. Connection-oriented demultiplexing
      


  • Principles of Reliable data transfer(RDT)
      
       

    : FSM(F
    inite State Machine)? 각각 loop를 돌고 있는 상태
    : ACKs(ACKnowledgements)? 수신자가 패킷을 받았다고 발신자에게 보내는 신호
    : NAKs(Negative ACKnowledgements)? 수신자가 패킷에 에러가 있다고 발신자에게 보내는 신호(seq# ack로 대체)
    : rdt 1.0? 수신, 발신 FSM을 분리 -> rdt 2.0? 에러 복구에 대한 ACK, NAK 도입 -> ACK/NAK 에러 발생시 발신자는 알수없으므로 중복 전송 가능성 -> rdt 2.1? 발신자는 ACK/NAK를 받았을 경우에만 재전송, 각 패킷에 sequence number를 붙임, 수신자는 중복 패킷 버림 (stop and wait) -> ACK/NAK에서 에러가 발생할 경우 전송한 패킷을 재전송 가능성 -> rdt 2.2? NAK 대신 마지막으로 받은 패킷의 seq를 ACK에 붙여 전송 -> 패킷이나 ACK에서 에러나 손실이 발생하면 무한정 기다리게 됨 -> rdt 3.0? time-out 도입

    1. Forward Error Correction(FEC)
      : Realtime communication
      : 수신자로 하여금 에러를 수정할 수 있도록 redundant bits를 추가 
    2. Retransmission
      : 수신자가 에러를 감지하고 발신자에게 data를 다시 전송해달라고 요청
     : ARQ(Automatic Repeat reQuest)
       : 수신자 피드백 방식, 오류검출만으로도 통신회선의 신뢰성 제고, 실시간 처리에는 부적합한 에러 제어 방법
       : 오류 검출, 수신 여부 피드백, 재전송 기능 등이 필요

       ■ Stop and Wait
         : 한 번에 하나씩 긍정 확인응답(ACK)을 받고, 후속 데이터 전송
         
    가장 단순하나, 다소 비효율적
         : 반이중 방식에서도 가능(Pipelining를 이용하여 효율 증가)

        

       ■ Go back N(GBN or Continuous ARQ)     
         
    Pipelining Protocol
         : 반이중 방식
         : Sliding Window 방식
         : 한번에 여러 개를 보낸후 하나의 긍정 확인응답(ACK)을 받고, 후속 데이터 전송.
         : 발신자는 패킷 n에 대해 timeout 발생시 패킷 n과 window 안에 있는 seq #이 n보다 높은 모든 패킷을 재전송
         : 수신자가 예기치 않은 패킷을 받을 경우, 그 패킷을 버리고 가장 최근에 받은 패킷의 ACK를 재전송

        

        

       ■ Selective Repeat
         Pipelining Protocol
         : 전이중 방식
         : Go back N 과 비슷하지만 오류가 발생된 패킷 이후 또는 오류 발생된 패킷만을 재전송
         : 수신자는 순서가 다르더라도 Receiver Window 안에 포함되는 패킷이라면 받을수 있으며 Buffer 해놓음.

        
        




'Major > Network' 카테고리의 다른 글

네트워크 - Link Layer  (0) 2015.12.17
네트워크 - Network Layer  (0) 2015.12.10
네트워크 - Application Layer  (0) 2015.12.02
네트워크 - 기본  (0) 2015.12.01
Big-endian vs Little-endian  (0) 2015.11.16
  • Network Application



  • Application architectures

    - Client-Server
     

    - Peer-to-Peer (P2P)
     

    - Hybrid of client-server and p2p
     

  • Processes communicating
    : 같은 호스트간의 프로세스간 통신은 IPC(Inter-process communication)
    : 다른 호스트간의 통신은 Server process, Client process 로 이루어짐

    - Sockets
     : 발신자/수신자에게 메세지를 송수신하는 프로세스
     : 일종의 "door" 역할
     

    - Addressing processes
     : 수신 메세지를 받기위해 프로세스는 반드시 identifier를 가져야한다.
     : host는 유일한 32-bit(IPv4) IP address를 가진다.
     : identifier = IP address + PORT numbers

  • Application protocol defines
    : Types of messages exchanged (request, response)
    : syntax, semantics
    프로세스들이 언제, 어떻게 메세지를 주고 받는지에 대한 규칙

  • Web and HTTP
    : Web page 는 HTML file, JPEG image, Java applet, audio file 등의 객체들로 구성, HTML-file이 베이스
    : 각 객체들은 자체 주소(URL)을 가지고 있음



    - HTTP
     : HyperText Transfer Protocol
     : 웹 어플리케이션 레이어 프로토콜
     : client/server model
     : client? 브라우저가 requests, receives 한 웹 객체를 디스플레이 함
     : server? web server가 요청에 대한 응답으로 객체를 전송
     : http는 stateless protocol -> 서버는 클라이언트의 과거 요청을 유지하지 않음
     : RTT? RoundTripTime으로 클라이언트 요청이 서버로 응답이 오는 시간

      

       TCP 사용
        1. 클라이언트는 TCP Connection을 초기화 함(소켓을 만듦), PORT 80
        2. 서버는 클라이언트로부터 TCP Connection을 받음
        3. 브라우저(HTTP clinet)와 웹서버(HTTP server)간 HTTP messages를 주고 받음
        4. TCP Connection 종료

       Nonpersistent HTTP
        : 하나의 객체만 TCP를 통해 전송
        : HTTP 1.0에서 사용
        : Response time? total = 2RTT + transmit time
        : 객체(파일, 이미지 등)마다 2RTT와 TCP 연결에 대한 오버헤드 발생
        

       Persistent HTTP
        : 다수의 객체를 TCP를 통해 전송
        : HTTP 1.1에서 default로 사용
        : 서버는 응답을 보낸 후에도 Connection을 열어둠
        : client는 참조 객체를 마주했을 때 요청을 보냄
        : 객체마다 1RTT의 오버헤드가 감소함

      


            :3RTT + 2transmit time                      :2RTT + 1transmit time


    - HTTP request message

        
      ■ Header (출처 : http://coffeenix.net/doc/network/http_1_0_vs_1_1.html)

    분 류

    Massages

    Header

    설    명

    지 원 버 전

    생략여부

    HTTP1.0

    HTTP1.1

    Request

    Requst-Line

    Method※5

    GET,POST,HEAD

     

    OPTIONS,PUT,DELETE,TRACE

    ×

     

     

     

    Request-URI

    요청 데이터의 절대 주소나 상대주소.

    ex)http://www.isoft.co.kt/index.html or /test/helloworld.html

     

     

     

    HTTP-Version

    HTTP" + 0.9∼1.1(해당 프로토콜)

     

     

    Request-Header

    Authorization

    사용자 인증정보 - 사용자 ID와 암호가 함께 Base64로 인코딩※6

    ex)Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

     

     

     

    From

    자원의 생성자나 웹마스터의 전자우편 주소

    ex)From: psycho@isoft.co.kr

     

     

     

    If-Modified-Since

    GET 사용시-헤더 필드에 지정된 날짜보다 나중 자원만 전달(케시일자검색)

    ex)If-Modified-Since: Tue, 15 Nov 1994 12:45:26 GMT

     

     

     

    Refer

    한페이지에서 다른페이지를 요청할 때 (링크시) 이전 페이지 주소제공

    ex)Referer: http://www.w3.org/hypertext/DataSources/Overview.html

     

     

     

    User Agenter

    browser 정보

    ex)User-Agent: MyWebBroswer/0.5

     

     

     

    Accept

    클라이언트의 사용가능 미디어타입

    ex)Accept: text/*, text/html, text/html;level=1, */*

    ×

     

     

    (Content

     Neogotation)

    Accept-Charset

    클라이언트에서 사용할 수 있는 문자 집합(생략시 모두인식)

    ex)Accepr: iso-8859-1, unicode-1-1

    ×

     

     

    (Content

     Neogotation)

    Accept-Encoding

    클라이언트에서 제공되는 인코딩 방법(압축)

    ex)Accept-Encoding: compress, gzip

    ×

     

     

     

    Accept-Language

    클라이언트가 인식할 수 있는 언어(우선순위가능)

    ex)Accept-Language: da, en-gb;q=0.8, en;q=0.7(독일어, 영국영어, 영어)

    ×

     

     

     

    Host

    서버의 기본URL(하나의 IP주소에 여러개의 이름을 가진 멀티 서버를 지원)

    ex)www.w3.org

    ×

    ×

     

     

    If-Match

    ETag값 비교-Method수행-(PUT 메소드:해당header무시),다르면 402에러발생

    ex)If-Match: "0-556-343b9e36"

    ×

     

     

     

    If-None-Match

    ETag값 비교, 다를때-Method수행-(If-Match와 반대),같을 때 에러

    ex)If-None-Match: "0-556-343b9e36","0-1e4-34367116"

    ×

     

     

     

    If-Range

    클라이언트 캐시 정보를 업데이트 정보 (ETag or Date 비교)

    ×

     

     

     

    If-Unmodified-Since

    헤더값에 지정된 날자로부터 수정이 없는경우 Method를 수행

    ex) If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT

    ×

     

     

     

    Max-Forwards

    이 메시지가 거쳐 갈수 있는 최대 Proxy의 개수를 지정

    ex)Max-Forwards: 7

    ×

     

     

     

    Proxy-Authorization

    비공개 프록시 서버 유저인증을 위한 코드

    ×

     

     

     

    Range

    자원의 일부분만 받을때(이어받기기능) 받을범위 지정

    ex)bytes=0-499            : <- 0~499byte를 얻고자 할 때.

    ×

     

      ■ Method

       

      ■ GET vs. POST
       : GET? URL 필드를 이용하여 업로드
       : POST? entity body를 이용하여 업로드
       : GET은 해당 요청을 몇번을 수행해도 해당 요청에 대한 결과가 계속 동일하게 돌아오는 것을 의미하며, POST는 해당 요청이 수행되면 서버에서 무언가 바뀌고, 동일한 결과가 돌아오는 것을 보장할 수 없다는 것을 의미한다.
       : POST의 경우 GET과는 달리 쿼리스트링(query string)의 글자 수 제약이 없으며, 파일업로드 등의 동작이 가능하다. 
    그리고 POST의 경우 쿼리스트링이 URL에 포함되지 않기때문에 user에게 파라메터 값 등을 덜 노출한 상태로 요청이 가능하다. 하지만 결국 HTTP 요청은 SSL을 이용하는 https가 아닌경우 plain text로 이루어게되고, 그러다보니 요청을 열어보면 쿼리스트링이 동일하게 보이는것은 마찬가지라 특별히 보안상 더 뛰어나다고는 말하기 힘들다.

    GET 요청은 브라우저에서 캐시를 할 수 있다.

    글을 작성하는 요청인데 GET 방식으로 글내용과 제목을 받아서 서버로 전송한다면, 해당 GET 요청과 그에 대한 응답이 브라우저에 의해 캐쉬가 되었다가 다시 사용될 우려가 있다. 이 경우 캐쉬에의해 자동으로 동일한 글을 또 작성하는 동작이 서버에서 발생될 수 있는데 이것은 심각한 오류이다.

    검색봇(크롤러)으로 인한 문제 발생

    구글이나 네이버의 검색봇(bot 혹은 crawler)들이 웹페이지 수집을 위해 해당 웹서버에 GET 요청을 할 수 있다. 이때 이러한 봇의 요청에 의해 게시판에 엉뚱한 데이터로 글이 작성되어 올라간다던지, 서버쪽의 데이터가 바뀐다면 당황스러운 일들이 발생할 가능성이 크다. 

    출처: http://www.letmecompile.com/get-post-%EB%B0%A9%EC%8B%9D-%EC%B0%A8%EC%9D%B4%EC%A0%90/


    - HTTP response

        

      ■ Header (출처 : http://coffeenix.net/doc/network/http_1_0_vs_1_1.html)

    분 류

    Massages

    Header

    설    명

    지 원 버 전

    생략여부

    HTTP1.0

    HTTP1.1

    Response

    Status-Line

    HTTP-Version

    HTTP" + 0.9∼1.1(해당 프로토콜)

     

     

     

    Status-Code

    수신상태코드-(4Page의 표참조.)

     

     

     

    Respon-Phrase

    수신 상태코드에 대한 간략한 설명-(4Page의 표참조.)

     

     

    Response-Header

    Location

    요구한 정보 실제 위치. 옮겨지거나 다를경우-정보주소가 실제 위치 정보.

    (redirection,forwording 단, 절대주소만 가능.)

     

     

     

    Server

    서버 프로그램의 이름과 버전 정보

    ex)Server: Apache/1.3a1

    ×

     

     

     

    WWW-Authenticate   

    사용자 인증이 필요한 자원을 요구시, 필요데이터와 서버가 제공하는 인증 방식

    ex)WWW-Authenticate: Basic realm="아이 소프트"

    ×

     

     

     

    Age

    요구후 원 서버(origin Server)에서 응답생성하지까지의 시간(초단위)

    ×

     

     

     

    Proxy-Authenticate

    서버가 프록시 서버일 경우 유저 인증을 요구하기 위한 헤더이다.

    ×

     

     

     

    Public

    서버에서 지원 가능한 Method의 리스트(제한의 의미는없음)

    ex)Public: OPTIONS, MGET, MHEAD, GET, HEAD

    ×

     

     

     

    Retry-After

    503 에러시 -몇초(시간)후에 다시 요구 메시지를 보내라는 정보

    ex)Retry-After: Fri, 31 Dec 1999 23:59:59 GMT(Time)

       Retry-After: 120   (Second)

    ×

     

     

     

    Warning

    상태코드와 응답 구문에 추가적인 경고

    ×

     

      

    Vary

     

     ×

     


      ■ Status codes 
    (출처 : http://coffeenix.net/doc/network/http_1_0_vs_1_1.html)

    1xx: Informational -

     요구메시지를 받은 후

     연결 중 작업할 때.

    2xx: Success -

     요구메시지를 제대로 받았을 때.

    3xx: Redirection -

     요구메시지를 수행하기 위해

     다른 작업이 필요할 때.

    4xx: Client Error -

     요구 메시지의 형식이 틀리거나

     빠진 부분이 있을 때.

    5xx: Server Error -

    서버에 문제가 있을 때.

    100 Continue

    200 OK

     성공처리

    300 Multiple Choices

     (실제 발생하지 않음)

    400 Bad Request

     요구가 올바르지 않음

    500 Internal Server Error

     예기치 못한 서버처리오류

    101 Switching Protocols

    201 Created

     요구에따라 새로운자원생성(PUT)

    301 Moved Permanently

     URL이 확정적으로 옮겨짐

    401 Unauthorized

     사용자 인증이 필요

    501 Not Implemented

     요구에 대한 지원불가

     (transfer-Encoding)

     

    202 Accepted

     요구를 이해하였으며 진행중

    302 Moved Temporarily

     URL이 임시적으로 옮겨짐

    402 Payment Require

    502 Bad Gateway

     게이트웨이·프락시의 응답오류

     

    203 Non-Authoritative Information

    303 See Other

    403 Forbidden

     요구는 이해하나 수행거절(PUT)

    503 Service Unavailable

     서버부하로 응답불가

     

    204 No Content

     요구자료에 정보가 없음(empty)

    304 Not Modified(If-Modified-Since)

     수정날짜에 수정되지 않음

    404 Not Found

     요구한 파일이 없음

    504 Gateway Time-out

     

    205 Reser Content

    305 Use Proxy

    405 Method Not Allowed

     허락된 메소드가 아님

    505 HTTP Version not supported

     (요구를 무시할 수 있음..??)

     

    206 Partial Content

     

    406 Not Acceptable

     

     

     

     

    407 Proxy Authentication Required

     

     

     

     

    408 Request Time-out

     

     

     

     

    409 Conflict

     

     

     

     

    410 Gone

     

     

     

     

    411 Length Required

     

     

     

     

    412 Precondition Failed

     

     

     

     

    413 Request Entity Too Large

     

     

     

     

    414 Request-URI Too Large

     

     

     

     

    415 Unsupported Media Type

     


    - Cookies
     : server는 response를 보내고 나면 그 client는 잊어버린다. 웹사이트가 user를 구별하기 원하거나, user access를 제한하기를 원한다면?
     : cookies에는 그 user를 위한 identifier가 담겨있다.
     1. set-cookie header 를 HTTP response message에 포함
     2. cookie header는 request message에 포함
     3. cookie 파일은 user의 host에 계속 있고, user의 브라우저에 의해 관리된다.
     4. Back-end Database는 웹 사이트에 있다.
     : 세션유지에 사용

     Persistent Cookie: 브라우저를 종료해도 사용자의 하드드라이브에 저장. 만료시기가 되면 삭제
     Session Cookie: 웹 클라이언트(IE) CASH에 임시 저장. 삭제 시기는 서버에서 만료되면 삭제


      

    - Session
    : 사전적 의미로 "시간"을 의미
    : 클라이언트와 웹 서버간에 통신 연결에서 두 개체의 활성화된 접속을 뜻함
    : 클라이언트가 웹서버에 요청하여 처음 접속하면 JSP나 ASP 엔진은 요청한 클라이언트에 대하여 유일한 ID를 부여하게 되는데 이 ID를 세션이라 부름
    : 세션 ID를 임시로 저장하여 페이지 이동 시 이용하거나, 클라리언트가 재접속 했을 때 클라이언트를 구분할 수 있는 유일한 수단
    : 각각의 클라이언트마다 고유의 ID부여, 
    Session 객체들마다 저장해 둔 Data를 이용, 클라이언트 자신만의 고유한 페이지를 열어놓아서 생길 수 있는 보안상의 문제 해결 능력

    - Session vs. Cookie
     : Session은 서버 쪽에 정보를 저장하고, 쿠키는 클라이언트 쪽에 정보를 저장한다는 것이 가장 큰 차이점

    - Web caches(proxy server)
     : 클라이언트 요청에 대한 응답시간을 줄이고, 트래픽을 줄이기 위해 사용
     : cache 되지 않은 객체에 있어서는 낮은 성능, 또 cache 되어 있는 객체가 최신의 것이 아닐 수 도 있다. (해결 방안으로 
    If-Modified-Since)

      

  • FTP
    : File Transfer Protocol, RFC 959
    : 다른 host로부터 혹은 다른 host로 file을 전송할 때 사용하는 프로토콜
    : stateful protocol
    : client - server model
    transport protocol로 TCP 사용, FTP server는 PORT 21로 control connection(out-of-band), client는 PORT 20로 data connection
    : 암호화가 필요하여 최근에는 SFTP나 FTPS로 대체

      

  • Electronic Mail
    : 주요 3가지 컴포넌트로 user agents, mail servers, SMTP(Simple Mail Transfer Protocol)로 구성
    : user agents? mail reader, mail을 읽고, 편집
    : mail servers? mailbox + message queue + SMTP

     

    : SMTP? mail server 사이에서 메시지 전달을 위해 적용되는 프로토콜
    : transport protocol로 TCP 사용, PORT 25
    : persistent connection(여러 메시지를 하나의 TCP connection에서 전송 가능)
    : handshaking(greeting) -> transfer of message -> closure



    - HTTP vs. SMTP
     : HTTP 1.1과 SMTP 둘다 persistent connection
     : 둘다 ASCII 커맨드, status code를 가짐 
     : HTTP는 pull로 client가 요청으로 정보를 끌어옴, SMTP는 push로 요청하지 않아도 server가 mailbox까지 정보를 줌.
     : HTTP는 각 개체가 캡슐화, SMTP는 한 msg안에 여러 객체가 담긴다.

    - Mail access protocols
     : POP? Post Office Protocol, TCP 사용, download-and-keep, stateless across sessions
     : IMAP4? Internet Mail Access Protocol, 메세지 ID와 폴더 이름 간 매핑하여 user에게 접근 허가, user stateful across sessions
     : HTTP? gmail, naver 등
     

  • DNS
    : Domain Name System
    : IP 주소와 Name의 mapping가 필요함 -> name-address resolution
    : hostname을 ip주소로 변환, host aliasing, mail server aliasing, load distribution
    : UDP/TCP 둘 다 사용가능하지만 주로 UDP 사용, PORT 53
    : 트래픽, single point of failure, 거리, 확장성 등의 문제로 중앙 집권 구조로 구현하지 않고, 분산 데이터베이스로 많은 name server의 계층형태로 구현



    : www.amazon.com의 ip 주소를 얻는 과정
    1. client가 root server로 com DNS server를 찾기위해 query를 보낸다.
    2. client가 com DNS server로 amazon.com DNS server를 찾기위해 query를 보낸다.
    3. client가 amazon.com DNS server로 www.amazon.com의 ip 주소를 얻기 위해 query를 보낸다. -> 주소의 역순으로 접근하면서 ip주소를 찾아감
    : Root DNS server : 13개 (A~M) 세계적으로 존재
    : Top-level domain (TLD) servers? com, org, net, edu, etc, kr, uk, fr, ca, jp 등
    : Authoritative DNS servers? 어떤 단체에 대한 DNS 실제적인 IP주소
    : Local Name Server? 엄격한 계층구조가 아닌 각 ISP(default name server)를 하나씩 가지고 있음, host가 DNS query를 생성하면 query가 DNS server로 전송, 마치 프록시처럼 계층적으로 query 전달
    : caching and updating records

    - DNS name resolution

      
    :iterated query                                        :recursive query

  • P2P


    - BitTorrent
     : File은 256KB chunks로 쪼개짐
     : peer joining torrent: 시간이 흐름에 따라 chunk가 쌓인다. tracker로 등록하여 주번 peer list를 얻음
     : 다운로드 하는 동안 peer는 chunk를 다른 chunk부터 요청하여 받음, 가장 귀한 chunk부터 요청하여 받음)
     : Free Riding 방지 -> Tit-for-tat -> 많이 주는 쪽을 top-four providers로 선정 


    - Centralized index
     : peer들의 정보(ip, content)를 중앙서버에서 찾는 구조
     : single point of failure, 병목현상등의 문제 발생

     
    - DHT
     : Distributed Hash Table = Distributed P2P database 
     : DB는 (id, value) pairs 를 가짐, 각 peer 들은 query를 이용하여 (key, value) peers을 얻어낼 수 있음
     : Shortcuts(peer를 찾는 가장 짧은 경로), Peer Churn(Peer가 떠날 경우 successor를 새로 지정)
      


  • Summary

     


'Major > Network' 카테고리의 다른 글

네트워크 - Network Layer  (0) 2015.12.10
네트워크 - Transport Layer  (0) 2015.12.09
네트워크 - 기본  (0) 2015.12.01
Big-endian vs Little-endian  (0) 2015.11.16
MAC address  (0) 2015.11.16

+ Recent posts