3월의 마지막 스터디
프로토콜을 알기 전에 '노드 (Node)'의 개념을 알아한다.
네트워크를 이루고 있는 각각의 컴퓨터나 기기를 노드라고 하는데요!
로컬 네트워크(LAN)에 연결된 각 PC를 노드라고 할 수 있습니다. 노트는 연결되어있고, 그 연결을 매개하는 다리 역할을 하는 것이 라우터(router)입니다. 노드들 간에 데이터를 교환하려면 데이터가 어떤 방식으로 전송되어야하는 공통의 약속이 필요합니다.
따라서, 그 약속을 프로토콜이라고 하는데요!**
어떤 데이터를 전송해야한다를 규정한 약속이라고 생각하시면 됩니다.
TCP/IP 프로토콜을 검색했을 때의 정의를 보면,
"정보기기 사이, 컴퓨터끼리 또는 컴퓨터와 단말기 사이 등에서 정보교환이 필요한 경우, 이를 원활하게 하기 위하여 정한 여러 가지 통신규칙과 방법에 대한 약속. 즉, 통신의 규약을 의미" 라고 되어있습니다.
란 TCP/IP는 컴퓨터간 통신을 위해서 만들어 졌습니다.
TCP/IP 란 이름에서 알수 있듯이, TCP/IP 는 TCP와 IP 의 2개의 프로토콜로 이루어져 있는데, 통상 IP 프로토콜 위에 TCP 프로토콜이 놓이게 되므로 TCP/IP 라고 부르게 되었다.
서버와 클라이언트간에 데이타를 신뢰성있게 전달하기 위해 만들어진 프로토콜이다.
데이타를 전송하기 전에 데이타전송을 위한 연결을 만드는 연결지향 프로토콜이다.
신뢰성 ⇒ 데이터는 네트워크선로를 통해 전달되는 과정에서 손실되거나 순서가 뒤바뀌어서 전달될수 있는데, TCP는 손실을 검색해내서, 이를 교정하고 순서를 재조합할수 있도록 해준다.
TCP/IP 프로토콜 구조
IP주소는 통신에 참여하는 호스트를 유일하게 지정하는 방법을 제공하지만, 실제 통신을 하려면 전송경로를 결정하고 그에 따라 데이터를 전달하는 절차가 필요한데 이를 라우팅이라고 부릅니다. 라우팅은 데이터를 목적지까지 전달하는 일련의 작업을 가리키는 용어로, 라우팅에 필요한 정보를 수집하는 작업과 라우팅 정보를 기초로 실제 데이터를 전달하는 작업을 포함합니다.
인터넷 계층의 IP가 제공하는 전송 서비스는 최선을 다하지만(best-effort) 신뢰성은 없다는 특징이 있습니다. 즉, 데이터에 문제가 생기면 목적지에 도달하지 못하는 상황이 발생할 수 있고, 목적지에 도달해도 실제 데이터의 내용이 손상됐을 가능성도 있습니다.
전송 계층에서는 이러한 데이터 손실 또는 손상을 검출해 잘못된 데이터가 목적지에 전달되는 일을 방지합니다.
TCP의 특징
UDP의 특징
클라이언트-서버 모델
네트워크 프로그램은 일반적으로 클라이언트-서버 모델로 작성합니다. 클라이언트-서버 모델을 한 컴퓨터에서 실행되는 두 프로그램에 적용할 경우에는 다양한 프로세스 간 통신(IPC, Inter-Process Communication) 기법을 사용해 데이터를 주고 받을 수 있습니다. 반면, 네트워크로 연결된 컴퓨터에서 실행되는 두 프로그램에 적용할 경우에는 반드시 통신 프로토콜을 사용해야만 데이터를 주고받을 수 있습니다.
서로 다른 호스트에서 실행되는 두 프로그램이 상호 접속하는 경우를 가정해보면, 접속이 성공하려면 반드시 상대 프로그램이 실행 중이어야 합니다. 그러나 이와 같이 동시 접속 모델을 사용하면 타이밍 문제 때문에 접속이 실패할 확률이 높아지고, 결과적으로 통신할 수 없는 경우가 자주 발생하게됩니다.
반면, 클라이언트-서버 모델에서는 이와 같은 문제가 자연스럽게 해결됩니다. 한 프로세스가 먼저 실행하여 대기하고, 다른 프로세스가 나중에 실행하여 접속하면 됩니다. 클라이언트가 서버에 접속하려면 서버의 IP 주소와 포트 번호를 알고 있어야 합니다. 반면, 서버는 클라이언트의 주소를 미리 알 필요가 없습니다. 클라이언트가 보낸 패킷에는 클라이언트의 주소 정보가 모두 들어 있기 때문에, 서버는 이 정보를 이용해 언제든지 해당 클라이언트에 데이터를 보낼 수 있습니다.