tcp

    HTTP 통신과 TCP, IP 레이어 한 번에 정리하기 : 3way handshake, 소켓 통신

    시작하며 HTTP(HyperText Transfer Protocol) 통신은 클라이언트와 서버 간 데이터를 주고 받기 위한 프로토콜이다. 다시 말하면, HTTP 통신 자체는 어떤 형식의 데이터를 보낼지 미리 정의해 놓는 방식일 뿐이다. 따라서 클라이언트와 서버간 HTTP 통신이 일어나기 위해서는 데이터를 주고 받기 위한 여러 기술이 필요하다. 이번 글에서는 HTTP 통신이 일어나기 위해 내부적으로 어떤 일이 일어나는지를 정리해본다. IP 레이어 IP 레이어란 무엇인가? 먼저 클라이언트와 서버를 생각해보자. 클라이언트와 서버는 컴퓨터일 뿐이며, 데이터를 요청하는 쪽이 클라이언트 데이터를 보내는 쪽이 서버가 된다. 따라서 이 둘간의 통신을 위해서는, 두 컴퓨터가 연결되기 위한 주소값이 필요하다. 이러한 역할..

    [인터넷 프로토콜] TCP란 무엇인가? 패킷 전송을 위한 정보의 관점에서 보는 TCP(Transmission Control Protocol)

    *앞 글: IP, IP Address란 무엇인가? [인터넷 계층] IP, IP Address란 무엇인가 IP IP는 Internet Protocol의 약자이다. 네트워크 호스트는 IP에서 정의된 규약(Protocol)을 이용해 네트워크 상에서 정보를 주고 받으며, 이 정보는 패킷(Packet) 단위로 전달 된다. 네트워크 호스트(Network H kotlinworld.com 앞의 글에서 인터넷 계층의 IP Address만으로는 패킷 전달을 위해 여러 한계점이 있음을 살펴보았다. 패킷을 받을 대상이 연결 상태임을 확인하지 않고 전송하기 때문에 받을 대상(호스트)이 서비스 불능 상태여도 패킷이 전송된다. 순서가 있는 여러 개의 데이터를 보냈을 때 받는 데이터가 같은 순서로 받아질 것이란 보장이 안된다. 패킷..

    [인터넷 프로토콜] 포트(Port)란 무엇인가? IP Address의 한계와 Port의 역할

    IP Address의 한계점IP Address를 할당 받은 기기가 있다고 가정한다. 이 기기를 컴퓨터라고 생각해보자. 만약 IP Address만을 이용해 컴퓨터로 데이터를 보낸다면 컴퓨터는 그 데이터를 받을 것이다. 하지만, 문제는 그 데이터가 어느 프로세스에서 처리되어야 하는 것인지를 알 수가 없다. Port를 이용한 프로세스별 패킷 송수신예를 들어 컴퓨터에 카카오톡, 라인, Slack 메세지 프로세스가 실행 중이라고 해보자. 컴퓨터가 메세지를 받았을 때 어떤 프로그램으로 해당 메세지를 전송해야 하는가? 만약 아무런 정보가 없다면 어떤 프로세스로 메세지를 보내야 하는지 알 수 없다. 이를 해결하기 위해 TCP에서는 패킷에 어떤 프로세스가 받아야 하는지에 대한 정보(Port 정보)를 추가하여 보낸다. 통..