컴퓨터 네트워크 - 2

표준성·2023년 10월 27일
1

컴퓨터네트워크

목록 보기
2/4

1강에 있는 내용을 이어서 설명한다.

프로토콜

데이터 교환 방식을 정의하는 규칙 체계이다. 각기 다른 컴퓨터는 매우 상이한 소프트웨어와 하드웨어를 사용할 수 있기에, 공통된 통신 규약을 만들어 소통한다. 대표적으로 IP(Internet Protocol)가 있다.

그러나 과거에는 장비 제조사별로 다른 프로토콜을 사용하고 있었고, 이를 해결하기 위해 프로토콜을 국제적으로 표준화한 것이 OSI 7 Layers이다.

OSI 7 Layer

교수님 자료에서 ISO/OSI reference model이라고 표현되었다. 총 7계층으로 나누어져 있다.

physical

전선, 광섬유 등 물리적인 연결방식을 다루는 계층이다.

바로 이웃한(=직접 연결된, neighboring) 네트워킹 장치들간의 데이터 전송을 담당한다. 대표적으로 ethernet, WI-FI가 있다.

network

데이터그램(=패킷)을 source부터 destination까지 라우팅을 담당한다. 대표적으로 IP가 있다.

transport

응용 프로세스 간의 통신을 돕는다. 대표적으로 TCP/UDP가 있다.

session

호스트들간의 연결을 최초로 연결하고, 통신 중 연결이 끊어지지 않도록 유지시켜준다. 에러 복구도 함. 대표적으로 SSH가 있다.

presentation

데이터 값이 다양한 시스템에 저장될 때 다양한 형태로 저장되는데, 이때 다양한 표현양식(syntax)를 공통의 형식으로 변환하여 번역기 역할을 수행한다. 암호화, 압축 등의 역할도 수행한다.

application

네트워크 서비스들이 기능을 제공하도록 도와준다. 대표적으로 HTTP가 있다.

network vs transport layer

network layer는 호스트들간의 소통을 담당한다면, transport layer는 프로세스들간의 소통을 담당한다.

TCP & UDP

어플리케이션은 각자 다른 특성( 데이터 손실, 딜레이, 데이터 전송률(Throughput), 보안)을 요구하고, 이에 따라 사용하는 전송 서비스(transport service)가 다르다.
데이터 신뢰성을 중요시여긴다면 TCP를 사용해야 한다.

TCP

TCP는 다음과 같은 특성을 가진다.

  • 연결지향(connection-oriented) : 클라이언트와 서버 프로세스가 연결되기 전 준비(setup)이 필요하다.
  • 믿을 만한(reliable) 전송률
  • 흐름 제어 :
  • 혼잡 제어 :
    timing, security, minimum throughput guarantees는 제공하지 않는다.

UDP

최선을 다하는(best effort) 프로토콜이다. 커넥션 준비(establishment)가 필요없고, 세그먼트(전송 계층에 존재하는 데이터의 집합, 패킷과 비슷함)의 헤더가 작고, 혼잡 제어 기능이 없다.

데이터 손실이 발생하는대신 전송 속도가 빨라 일반적으로 멀티미디어 스트리밍에 사용된다. DNS와 SNMP 또한 UDP를 사용한다.

UDP Checksum

전송된 세그먼트의 에러를 검출하기 위함이다. 다음과 같은 과정을 거친다.

  1. 도착 IP주소, 송신 포트번호, 수신 포트번호, 데이터 길이, payload 등의 세그먼트의 데이터들을 16비트 단위로 쪼개서 전부 더한다.
  2. 계산한 sum 값을 1의 보수를 취해 체크섬 값을 구한다.
  3. 송신자는 체크섬 필드에 값을 넣어서 보낸다.
  4. 수신자는 받은 세그먼트의 데이터들을 계산하여 체크섬을 구한다.
  5. 체크섬 필드의 값과 동일한지 체크하여 오류를 검출한다.

그러나 전송 도중 checksum값이 바뀔 수도 있고, 데이터가 변형되었음에도 불구하고 checksum 값이 동일한 경우도 발생할 수 있기에 완벽한 방식은 아니다.

계산 문제

Circuit Switching

How long does it take to send a file of 640,000 bits from host A to host B over a circuit-switched network?

  • all link speeds : 1.536 Mbps
  • each link uses TDM with 24 slots/sec
  • 500 msec to establish end-to-end circuit

먼저 파일의 크기와 링크의 스피드 단위를 통일시켜야 한다.

link speed : 1.536 Mbps = 1,536,000 bps
1 Mbps = 1,000,000 bps

TDM은 하나의 time slot에 하나의 사용자 채널을 할당하므로, 하나의 사용자 채널(링크)의 속도는 다음과 같이 구할 수 있다.

one link speed = all link speeds / number of time slots

계산하면 1,536,000 / 24 = 64,000 bps 를 구할 수 있다. 그렇다면 총 파일 사이즈를 링크의 속도로 나누면 파일이 보내지는 시간을 구할 수 있다.

Time = File Size / Link Speed

640,000 / 64,000 = 10s가 걸린다. 이후 circuit을 초기 연결하는 데에 0.5초가 걸리므로 총 걸리는 시간은 10.5초가 된다.

Application Layer

어플리케이션들은 크게 세 가지 아키텍쳐를 가진다.

Client-Server

컴퓨터 네트워크 1에서 설명했던 아키텍쳐로, 클라이언트는 서버에게 요청을 보내고 서버에 응답하여 값을 받는다.

Pure P2P

임의의 End system들이 직접 통신한다. End system들은 서로 클라이언트와 서버 역할을 동시에 수행하면서 동등한 지위를 가진다. 이때의 End system들을 peer라고 부르며, peer들은 간헐적으로 연결되고 ip 주소를 바꾼다. 확장성이 좋으나 관리하기 어렵다.

Hybrid of client-server and P2P

대표적으로 Skype와 같은 영상 통화 프로그램이 사용한다. 중앙 서버가 참여자의 주소를 찾고, 그 주소를 이용해 클라이언트들끼리 직접 연결된다. 또한 Instant Messaging에 사용하기도 한다.

데이터 통신

Process

호스트 안에서 실행되고 있는 프로그램을 일컫는다. 같은 호스트 안에서 실행되고 있는 두 프로세스들은 운영체제에 의해 정의되는 inter-process communication을 사용하여 통신한다. 다른 호스트 안에서 실행되는 프로세스들은 Socket을 이용해 통신한다.

Socket

프로세스가 데이터를 주고받기 위한 창구이다. 소켓은 프로토콜, IP 주소, 포트 넘버로 정의할 수 있다.

프로토콜

어플리케이션 레이어 프로토콜은 다음을 정의한다.

  • request / response : 메세지의 타입
  • message syntax(메세지 구문) : 메세지에 어떠한 필드들이 있는가
  • message semantic(메세지 의미) : 필드 내의 정보들의 의미
    대표적으로 HTTP / SMTP와 같은 프로토콜이 존재한다.

IP 주소

모든 호스트들은 유니크한 32-bit 주소를 가지고 있다.

포트 넘버

IP주소를 이용해 호스트가 어딨는지 찾을 수 있다. 그러나 다양한 프로세스들은 같은 호스트 내에서 실행되기에, IP 주소만으로는 프로세스를 특정하는 것에는 한계가 존재한다. 이를 해결하기 위해 0 ~ 65536사이의 숫자를 가지는 포트 넘버를 함께 조합하여 프로세스를 찾는다.

Web And HTTP

HTTP

어플리케이션 레이어 프로토콜 종류이다.

  • client-server 아키텍쳐 사용 : server는 요청에 응답으로 object(HTML 파일, 이미지, etc)들을 보낸다. client는 받은 object들을 화면에 보여준다.
  • TCP 통신 사용
  • 포트 번호 : 80

HTTP request message

ASCII 코드로 작성되어 있다.

//Request Start line
GET /index.html HTTP/1.1\r\n
//Request Headers lines
Host:
User-Agent:
Accept:
...
Connection:
//Request Message Body
Entity Body

HTTP Methods

데이터를 이용해 어떠한 일을 할 것인지 알려준다.

  • GET : 데이터를 요청할 때 사용
  • POST : 리소스를 만들거나 업데이트 시 사용, 요청 횟수마다 리소스 생성
  • PUT : POST와 비슷하나 일반적으로 리소스 수정 시 사용, 요청 횟수마다 같은 리소스 반환
  • DELETE : 데이터를 삭제할 때 사용

HTTP response message

//Response Start line
HTTP/1.1 200 OK\r\n
//Response Headers lines
Date:
Server:
Last-Modified:
...
Content-Type:
//Response Message Body
Entity Body(Data)

HTTP response status code

Response start line에 존재하며, request의 상태를 나타낸다.

  • 200(OK) : request 성공
  • 301(Moved Permanently) : request한 object가 이동함
  • 400(Bad Request) : request 메세지 이해 불가
  • 404(Not Found) : request한 문서 서버에서 찾을 수 없음
  • 505(HTTP Version Not Supported) : 그 말 그대로 버전 지원안됨

서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다. 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이터를 함께 전송한다. 쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용한다. 이를 이용하면 사용자의 로그인 상태를 유지할 수 있다.
쿠키는 Response Headers lines에서 설정할 수 있다.

//HTTP Response Message
Set-Cookie: yummy_cookie=choco

이후 동일한 서버로 요청을 할 때마다 Cookie 헤더에 이전에 서버로 부터 받았던 쿠키를 그대로 돌려 보낸다.

//HTTP Request Message
Cookie: yummy_cookie=choco

Web caches

클라이언트가 멀리 있는 origin server까지 가지 않고 가까운 프록시 서버의 web caches 파일에 접근하여 원하는 파일을 받아오는 기술이다. 다음과 같은 과정을 거친다.

  1. 클라이언트가 프록시 서버에 접근하여 캐시가 있는지 확인한다.
  2. 있다면 프록시 서버에서 데이터를 받아온다.
  3. 없다면 오리진 서버에 요청에 데이터를 받아오고, 받은 데이터는 프록시 서버에 저장된다. 그리고 클라이언트에 데이터를 전달해준다.

일반적으로 캐시는 ISP(하나의 네트워크를 운영하는 대학, 회사 등)에서 설치하고 관리된다.

DNS

Domain Name System. 웹사이트에 접속할 때 우리는 외우기 어려운 ip 주소 대신 도메인 이름을 사용한다. 도메인 이름을 URL에 입력했을 때 입력한 도메인을 실제 네트워크에서 사용하는 ip주소로 바꾸고 해당 ip주소로 접속하는 시스템을 DNS 서비스라고 한다.

  • ‘계층 구조’를 가지는 분산 데이터베이스 구조
    - Root Name Server
    • TLD Server : com, org, net, edu, uk, fr, ca, jp
    • Authoritative DNS Server
    • Local Name Server
  • hostname을 ip 주소로 번역(translation)한다.
  • 별칭 호스트네임을 정식 호스트네임(Canonical hostname)을 찾을 수 있게 한다.
profile
HYU_INFOSYS 23

0개의 댓글