컴퓨터는 통신을 어떻게 할까?
컴퓨터는 통신을 할 때에 클라이언트(고객)과 서버로 나뉜다.
통신은 클라이언트에서 신호를 보내면 복잡한 망을 거쳐서 최종 서버에 도달하게된다.
이때 잘 찾아갈 수 있도록 컴퓨터에 주소를 부여하는데 이를 ip주소 라고 한다.
그리고 ip 주소를 활용하여 정보를 전달할 때에 패킷이라는 통신 단위로 데이터를 전달한다.
이 ip 패킷에는 출발지ip, 도착지 ip 등이 포함되어 있다.
ip프로토콜은 이론 패킷의 정보를 바탕으로 데이터를 전달한다.
이 ip 프로토콜에는 한계가 존재하는데,
1. 비연결성 (대상이 존재하던 하지 않던 일단 전송한다)
2. 비신뢰성 (패킷이 순서대로 오지 않거나 중간에 소실될 수 도 있다) : 여러 노드를 거치기 때문에
3. 프로그램 구분 불가이다 (같은 ip를 사용하는 서버에서 서비스를 두개 이상한다면 구분이 불가능하다)
위의 문제들을 해결한 것이 tcp 이다.
tcp 통신은 우선 데이터를 전송하게에 앞서서 서버와 클라이언트가 연결되는 지 확인한다.

연결이 된것이 확인이 되면 전송을 시작하는데, 순서대로 오지않는다면 그 부분부터 다시 요청을 하는등으로 문제를 해결한다.
이를 통해 비연결성과 비신뢰성을 해결한다. 다음으로 구분이 불가능한 부분은 포트를 사용하여 해결한다.
포트란 항구라는 의미로 한개의 ip에서 여러 포트를 열어서 구분하게 된다.
따라서 TCP/IP 패킷에는 출발지 ip, port 도착지 ip, port 등을 담고 있다.

따라서 데이터를 보낼 때에는 우선 http 메세지를 생성하고 tcp / ip 연결을 한 후에 tcp/ip 패킷으로 감싸서 보낸다.
그 후 이 데이터를 서버가 받은 후에는 패킷을 벗기고 안의 데이터를 사용한다. 그 후 서버에서 위의 과정과 동일하게 하여 클라이언트에게 응답 패킷을 보낸다. 그리고 클라이언트가 응답 패킷을 받아서 그 데이터를 사용자에게 보여준다.