2022.08.23.TIL
CS스터디:
프로토콜은 양측이 상호작용하는 방식에 관한 규칙을 정의한다.
일상생활에서 사용되는 대부분의 프로토콜은 비공식적이지만, 이와는 대조적으로 네트워크 프로토콜은 매우 정확하게 명시된다.
인터넷에는 많은 프로토콜이 있는데, 개별 패킷의 형식을 지정하고 패킷을 전송하는 방법을 정의하는 IP(Internet Protocol)과 IP 패킷을 데이터 스트림으로 결합하고 서비스에 연결하는 방법을 정의하는 TCP(Transmission Control Protocol)이 가장 핵심적인 두 가지이다. 이 두 프로토콜을 합쳐 TCP/IP라고 한다.
게이트웨이는 IP패킷을 라우팅하지만 각 물리적인 네트워크에는 IP 패킷을 전달하기 위한 고유한 형식이 잇다. 각 게이트웨이는 패킷이 들어오고 나갈 때 네트워크 형식과 IP 형식 간 변환을 수행해야 한다.
IP 레벨 위에서는 TCP가 안정적인 통신을 제공하므로 사용자가 패킷에 관해 생각할 필요가 없다. 우리가 인터넷이라고 생각하는 서비스는 대부분 TCP를 사용한다.
이 프로토콜 위에는 애클리케이션 레벨 프로토콜들이 있고, 주로 TCP를 기반으로 구현된다. 이처럼 여러 개의 프로토콜 계층이 있는데, 각각은 바로 아래에 있는 프로토콜의 서비스에 의존하고 바로 위에 있는 프로토콜에 서비스를 제공한다.
UDP(User Datagram Protocol)은 TCP와 같은 레벨의 또 다른 프로토콜이다. TCP보다 훨씬 단순하고, 양방향 스트림이 필요하지 않은 데이터 교환에 사용된다.
IP는 신뢰성 없는 비연결형인 패킷 전송 서비스를 제공한다. 비연결형이라는 뜻은 각 패킷이 다른 패킷과 관계가 없음을 말한다. IP에는 상태를 관리하거나 기억하는 기능이 없다.
신회성이 없다는 뜻은 IP가 패킷이 잘 전성되는 것을 보장하지 않는 최선형 프로토콜이라는 뜻이다. 실제 사용할 때 IP는 매우 신뢰할 만하지만 패킷이 다른 곳이로 새거나 손상되면 복구를 시도하지 않는다.
IP 패킷은 최대 크기 약 65KB로 긴 메세지는 작은 덩어리로 분할되어 따로따로 전송된 다음 받는 쪽에서 재조합되어야 한다. IP 패킷은 지정된 형식을 같는다.
IP는 데이터 전송 속도에 대해 아무런 보장을 하지 않는다. 인터넷은 데이터 전송이 계속되도록 하기 위해 캐싱을 광범위하게 사용한다. 웹 브라우저 또한 정보를 캐싱하므로 최근에 봤던 웹페이지나 이미지에 접근하려고 할 때 네트워크가 아닌 로컬 캐시에서 데이터를 가져온다.
TCP는 신뢰성 있는 통신을 만들어 낸다. TCP는 사용자에게 신뢰성 있는 양방향 스트림을 제공한다. TCP는 바이트 스트림을 여러 조각으로 나누어 세그먼트라고 하는 TCP 패킷에 담는다. 세그먼트에는 데이터뿐만 아니라 제어 정보를 포함하는 헤더도 들어 있다.
TCP는 seq를 받았다면 ack을 보내야 한다.
tcp 타이머 설명
혼잡제어 설명
두 호스트 컴퓨터 간에 TCP 연결이 설정되먄, 그 연결은 특정 컴퓨터 뿐만 아니라 해당 컴퓨터의 특정 포트와도 연결된다. 각 포트는 서로 다른 대화를 나타낸다. 포트는 2바이트(16비트) 숫자로 표현되므로 포트는 최대 65536개가 있다.
100여 개의 잘 알려진 포트는 표준 서비스에 연결하는 용도로 예약되어있다. 예를 들어 웹 서버는 80번 포트를 사용하고, 메일 서버는 25번 포트를 사용한다. 출발지 포트와 목적지 포트는 데이터와 함께 전송되는 TCP헤더에 포함되어 있다.
TCP/IP는 빈트 서프와 로버트 칸이 1973년경 처음 설계했고, 이들은 이 골로로 2004년 튜링상을 공동 수상했다. TCP/IP는 지금까지 개선을 거쳐 왔고, 그동안 네트워크 규모와 트래픽 속도가 엄청나게 증가했음에도 본질적으로는 그대로이다. TCP/IP는 오늘날 인터넷상의 트래픽 대부분을 처리한다.
//////////////////////////////////////////////////////
Stomp: 클라이언트에서 구독하면 서버에서 보낼 때 구독한 곳에 보냄
소켓은 페이지가 넘어가면 끊김