인터넷으로 서로 다른 컴퓨터가 통신하기 위해서 필요한 인터넷 상의 컴퓨터주소다. 복잡한 인터넷망에서 정보가 잘 전달되기 위해서는 자신과 상대 컴퓨터의 주솔르 알아야 한다. 참고로 데이터 전달 단위는 패킷이다.
Ip로만 전달하기에는 중간에 데이터가 손실될 수도 있고, 상대 컴퓨터가 없어져도 알리지 않고 그대로 전달되는 등 여러 문제가 있었다. 이러한 문제를 해결할 수 있게 해주는 것이 TCP다. 프로그램에서 전송 정보를 소켓 라이브러리를 통해 OS에 보내고, OS에서 그 전송 정보를 먼저 TCP 패킷으로 포장한 다음 IP 패킷으패킷으로 포장해서 랜카드를 통해 보낸다.
TCP에는 전송 데이터를 감싼 채로 출발지 포트와 목적지 포트, 전송 제어, 순서 등이 담겨 있어 IP의 단점들을 어느 정도 해결할 수 있다.
상대 컴퓨터가 없어져도 데이터가 보내지던 문제도 3 way handshake로 해결된다. 노리적으로 연결되는 구조인데, 상대 컴퓨터로 syn을 보내면 상대 검퓨터는 syn을 받고 syn과 함께 ack를 보낸다. 이에 똑같이 ack를 보내 답장한다. 요즘에는 ack로 답장할 때 같이 데이터도 보낸다.
이렇게 하면 순서도 보장된다. 만약 순서가 잘못돼서 보내졌을 경우 상대 컴퓨터가 잘못된 곳부터 다시 보내라고 하기 때문이다.
TCP와 달리 IP에 포트와 체크섬만 추가된 하얀 도화지 같은 프로토콜이다. 데이터 보증, 순서 보증 그런 거 없다. 오히려 이러한 점이 무거운 TCP와 대비되는 장점이라 할 수 있다.
IP가 컴퓨터 주소이듯이 포트는 IP안 의 어플리케이션 주소라고 생각하면 된다. 만약 한 컴퓨터에 여러 어플리케이션이 있을 경우 각 어플리케이션마다 보내야 할 게 다른데 포트가 구별해준다. 0 ~ 1023은 잘 알려진 포트이므로 사용하지 말아야 한다. 특히 80은 HTTP이다.
IP 주소가 변경되거나 주소를 기억하지 못할 경우에 대비해 생긴 시스템이다. DNS 서버에서 도메인을 구매하면 그 도메인과 함께 IP 주소가 기록된다. 만약 IP 주소가 변경됐을 경우 DNS에서 IP 주소를 바꿔주면 된다. IP 주소를 사용하고 싶을 때는 DNS에 요청해야 한다.