저의 velog에 작성된 글은 모두 저의 주관적인 생각 및 이해를 바탕으로 작성된 글이므로
정확하지 않은 내용을 있을 수 있음을 알립니다.
[교재] Computer Networking : A Top-Down Approach 8th
오늘은 chapter 2 첫 번째 시간입니다! 첫 시간인 만큼 간단하게 Application architecture과 Transport Protocol에 대해 알아보도록 하겠습니다.
program은 end-system에서 작동하고, network을 넘어 소통합니다. 이게 어떻게 가능할까요?
application은 크게 두 가지의 architecture로 나뉩니다. 첫 번째는 Client - Server, 두 번째는 Peer to Peer(P2P)입니다. 이 두 가지의 방식이 어떻게 작동하는지, 그리고 어떤 특징을 가지고 있는지 알아봅시다.
Client - Server
항상 작동하는 server의 process와 그런 server와 통신하는 client process간의 통신
server는 항상 켜저 있습니다. 보통 data center에 있고, 영구적인 IP 주소를 가지고 있죠. 그에 반해 client는 다양한 IP 주소를 가지고 있고 server가 없으면 다른 사람(기기)와 직접 통신할 수 없습니다. 서로가 서로에게 필연적인 존재라고 볼 수 있습니다. 이 방식을 이용한 예로는 뒤에서 볼 HTTP가 대표적입니다.
Peer to Peer (P2P)
user host끼리 통신, 자체적으로 network를 확장하지만 관리가 복잡함
peer to peer에서의 server와 client는 모두 user입니다. user끼리 소통하기 때문에 client-server에서 server와는 달리 항상 작동하지 않습니다. peer는 request(client의 성격) 뿐만 아니라 service capability(server의 성격) 또한 가지고 있기 때문에 자체적으로 network를 확장한다는 특징이 있습니다. peer의 IP 주소는 매번 바뀌기 때문에 관리 또한 힘듭니다. 이 방식을 사용하는 대표적인 예시로는 P2P file sharing이 있습니다.
우선 통신이라는 것의 주체는 'process'입니다. 다시 말해 통신은 host가 하는 것이 아니라는 의미입니다.
위의 그림을 보시면 조금 더 쉽게 이해가 가능합니다. 통신은 host가 하는 것이 아니라 host가 가지고 있는 process에 의해 통신합니다.
추가적으로 peer to peer에서 peer host가 'client or server process'를 가지고 있는 이유는 peer은 client 일수도, server 일수도 있기 때문입니다.
application layer에 있는 process가 통신하기 위해 transport layer와 데이터를
주고 받는 하나의 통로
그림을 보면 확인할 수 있듯이 process가 통신하기 위해 data를 주고 받는 통로입니다. 왼쪽 컴퓨터에서 오른쪽 컴퓨터로 통신을 통해 data를 전송한다고 할 때, application layer는 socket을 통해 data를 transport layer에 전달하고, 오른쪽을 컴퓨터는 transport layer에서 socket을 통해 application layer까지 data가 전달됩니다.
app에 따라 필요로 하는 transport service는 다르다. 어느 app은 무조건 데이터 유실 없이 와야하는 app(서류 관련, 증권 관련)이 있고, 어느 app은 무조건 빨라야하는 app(streaming)이 있다. 대표적인 transport service를 다음 4가지로 나눠보았다.
data intergrity
데이터 무결성, 100% 신뢰가 가능한 데이터를 말한다. 얼마나 완전하고 정확한지를 나타낸다.
timing
real time, low delay를 요구한다. telephony, interactive games가 이에 속한다.
throughput
VIDEO의 경우 단위 시간동안 몇 fps는 반드시 넘어가야 영상이 재생된다고 할 때, 이 app은
minimum throughput guarantee를 요구하는 app이다.
security
금융, 개인 정보의 경우 security를 요구한다.
위의 표는 Tranport service requirements에 대해 정리해 놓은 것이다. 확인해 보면 납득 할 수 있을 것이다.
위에서 app별로 데이터를 전송할 때 어떤 것들이 요구되는지 확인해봤다. 이제는 이 요구사항들을 충족시키기 위해 어떤 전송 방식을 써야하는지 알아보겠다. Internet transport protocols services는 data intergrity를 하냐 못하냐에 따라 2가지로 나눠지는데, 각각의 특징을 알아보겠다.
TCP service (Transport Control Protocol)
UDP service (User Datagram Protocol)
위의 표는 app이 어떤 transport protocol을 쓰는지 나타낸 표이다. 참고하면 될 것 같다.
이번 시간에는 Application Architecture와 transport protocol에 대해 알아보았다. 다음 시간에는 Application의 client to server에 해당하는 HTTP에 대해 알아보도록 하겠다. 오늘도 수고 많이 하셨습니다 :)