Computer Network 2주차(2)

Chapter 2


구현 관점에서의 network app protocol를
개념적이나 구현적인 측면을 찾아봄

Network app을 만들려면

  • 프로그램들은 다른 end system에서 동작해야한다.
  • network을 통해서 데이터를 주고받아야 한다.
  • networ-core에서는 app을 실행할 필요없다.


Application architectures


통신하는 방식 2가지

1. client-server

server

  • 항상 켜져있는 host에서 실행해야합니다.
  • 잘 변하지 않는 IP address가 필요합니다.
  • scaling을 위해 data centers에 server를 보관(확장성을 위해)

clients

  • 서버와 데이터를 주고받습니다.

  • 간헐적으로 인터넷에 연결되어 있으면 됩니다. (필요할때만 연결하면 됩니다.)

  • 변화하는 IP addresses를 가져도됩니다.

  • clients 서로간에 통신을 하지 않습니다.

    	ex) web server - web clients

2. peer-to-peer(p2p)

  • 항상 켜져있는 서버가 없음
  • 임의의 end systems끼리 통신합니다.
  • 한 peers은 다른 peers에게 service를 요청하기도 하고 다른 peers가 요청하면 service를 제공하기도 합니다.
    • self scalability : p2p network에 참여하는 새로운 peer가 있다면 새로운 service capacity를 가져옴 (수요와 공급이 증가, capacity 증가)
  • peer들은 간헐적으로 연결되어있고 IP address가 바뀝니다. (관리가 어렵습니다. 복잡한 관리방법이 필요)


Processes communicating


application이 통신하는 것은 process들이 통신하는 것이다.

process : 어떤 한 host안에 실행되는 program

  • 같은 두개의 app이 같은 host에 있다면 두개의 processes는 IPC(inter-process communication)을 이용하여 통신합니다.
  • 다른 host의 process와 통신할때는 messages를 주고 받습니다.

process는 application layer에서 실행

Client와 server의 구분

  • client process : communication을 먼저 실행하는 process
  • server process : 상대방으로 부터 contact이 들어오기를 기다리는 process

P2P인 경우 각 processes가 server와 client의 역할을 둘다 수행해야합니다.

Sockets

process 들이 소통을 할때 transprot layer에서 service를 받아야 하는데 api가 필요합니다. 그런 작업을 socket에서 실행합니다.

  • socket은 문과 같다
  • sending process가 message를 보내면 상대방의 door까지 도달해서 받아감.

socket을 만들기만 하면 transprot layer가 알아서 보내줌 application layer는 알필요없음 application layer는 socket만 알고있으면 됨

Addressing processes

  • 메세지를 받기위해서는 process의 id(identifier)가 필요합니다.
  • 각각의 host들은 32-bit의 IP address를 가지고 있습니다.
  • IP address만을 가지고 process를 특정할수 없습니다.
    • 특정하기 위해 port number( 16-bit )가 필요합니다.

IP address는 host를 특정하고 port number는 host내부의 process를 특정합니다.

app-layer protocol

  1. 서로 교환하려는 message의 type을 규정 (어떤 종류의 message를 사용할 것인지)
  2. message의 문법이 필요합니다.
    • 문법으로 message의 field를 정의합니다.
  3. 각각의 field가 어떤 의미가 있는가에 대해 정의(message semantics)
  4. process들이 message를 주고 받을때 언제 보내고 언제 받는지에 대해 정의( rules )

Protocol의 종류 2가지

  1. open protocols
    • 문서로 작성해서 공개된 protocol
    • RFCs라는 문서에 정의됨
  2. proprietary protocols
    • 사적인 protocol
    • 비공개이므로 문서를 볼수 있는 사람들끼리 통신 가능

transport layer가 어떤 service를 제공해줄수 있고 만들려는 app이 어떤 service를 원하는지를 알고 개발해야합니다.

Transport protocols services

application을 구현할때 2개중 하나의 service선택해야합니다.

1. TCP service

  • 믿을만한 transport service를 제공합니다.(데이터의 손실 없음)

  • sender가 receiver을 넘지 않게 데이터를 보내줍니다.

  • network의 혼잡을 제어합니다.

  • 속도를 지정해서 message를 보낼수 없습니다.이 메세지를 어떤속도로 보내달라

  • 연결지향적인 service 두개의 process사이에 미리 연결을 설정합니다.

securing TCP

암호가 cleartext로 보내지기 때문에 snipping을 하게되면 암호를 알아낼수 있었습니다.

SSL(libraries)

  • 두개의 process를 인증을 하고 전달합니다.
  • application layer에 구현되어 있습니다.

2. UDP service

  • 의존할수 없는 data를 보냄 (message가 사라질수 있음)
  • 거의 아무 service도 제공해주지 않습니다.

왜 UDP가 있는가?
connection setup에 속도가 걸리지 않아서 빠르게 전송할수 있습니다.

좋은 웹페이지 즐겨찾기