0. TLS, SSL TCP/IP 네트워크 통신에서 보안을 제공하기 위한 암호 규약을 의미한다. (TLS가 SSL의 후속 버전이며, 둘 다 암호화된 통신을 제공하기 위한 프로토콜이라는 점에서 혼용되어 사용되기도 한다.) HTTP 2.x 이상의 버전들은 HTTPS 사용을 강하게 권장하고 있다고 알고 있는데, HTTPS 사용을 위해서는 응용 계층과 전송 계층 사이에서 TLS/SSL이라는 독자적인 프로토콜을 이용한다. (반드시 TLS/SSL을 사용해야 하는것은 아니고, HTTPS를 위한 보안 프로토콜로 보편적으로 많이 사용하는 프토로콜이 TLS/SSL이다) 1. Symmetric Cryptography (대칭 암호화) sender와 receiver가 secure한 통신을 하기 위해서, 모든 네트워크 사용자..
0. Internet Protocol 다른 계층과 마찬가지로 3계층인 네트워크 계층에도 여러 프로토콜들이 존재한다. 그러나 그 중에 가장 대표적이고 널리사용되는 프로토콜은 인터넷 프로토콜, IP이다. 인터넷을 사용하는 모든 컴퓨터는 자신의 고유 주소를 가지는데, 이러한 주소를 바로 IP주소라고 한다. 따라서 인터넷에서 전송되는 모든 데이터(패킷)들은 네트워크 계층의 IP를 기반으로 송수신되고, 전송 계층의 TCP에 의해 재조립되어 메세지를 전달한다. IP를 사용하여 패킷을 전달하는데는 여러가지 문제가 있다. 송신자는 수신자 서버의 상태를 알 수 없고, 전달 과정 중 패킷이 유실될 수도 있고, 큰 데이터를 여러 패킷으로 나누어 데이터를 전송하는 과정에 패킷의 순서가 뒤바뀔 수도 있다. 이러한 문제는 IP프..
Network layer 네트워크 계층은 전송계층에서 만들어진 세그먼트를 receiving 호스트로 전달한다. 송신 측에서는 세그먼트를 encapsulation하여 데이터그램을 만들고, 수신 측에서는 데이터그램을 decapsulation과정을 거쳐 세그먼트로 분리하여 상위 전송 계층으로 전달한다. 하위 계층인 링크 계층은 바로 옆의 라우터에 패킷을 전송하는 과정만 관리한다. 하지만 바로 옆 라우터의 정보만 안다고 해서 목적지까지 패킷을 최적화된 경로로 전송하는 것은 불가능하다. 따라서 네트워크 계층에서는 링크 계층과 다르게 바로 옆 라우터와의 통신이 아닌 전체적인 송수신 경로에 대한 관리가 이루어진다. Forwarding, Routing네트워크 계층에서 가장 중요한 두 개의 function이다. 포워..
네트워크의 전송 계층에서 데이터의 전송을 위해 사용하는 프로토콜에는 여러 가지가 있는데, 그 중에서 대표적인 것으로 UDP와 TCP가 있다. IP를 사용하여 패킷을 전달하는데는 여러가지 문제가 있다. 송신자는 수신자 서버의 상태를 알 수 없고, 전달 과정 중 패킷이 유실될 수도 있고, 큰 데이터를 여러 패킷으로 나누어 데이터를 전송하는 과정에 패킷의 순서가 뒤바뀔 수도 있다. 이러한 문제는 IP프로토콜만으로는 해결할 수 없고, TCP와 같은 추가적인 프로토콜을 사용하여 해결할 수 있다. 1. UDP (User Datagram Protocol)UDP는 '빈 껍데기'같은 프로토콜이라고 할 수 있다.UDP는 "best effort" service이다. best effort라 함은 계층에서 데이터의 전송을 위..
0. Transport Layer전송 계층은 다양한 호스트들에서 동작하는 어플리케이션 응용 프로세스 간의 논리적인 통신을 제공한다. 3계층인 네트워크도 통신에 관한 계층인데, 네트워크 계층과의 가장 큰 차이는 'process to process'라는 것이다. 즉 네트워크 계층에서는 호스트간의 통신을, 전송계층에서는 프로세스간의 통신을 관리한다. 전송 계층에서는 오류가 발생하면 데이터의 재전송을 요청하여 신뢰할 수 있는(reliable) 통신이 가능하도록 한다. 프로토콜은 모두 end system에서 동작한다. 코어의 router들은 전송계층의 프로토콜을 구현하고 있지 않다. sender는 세그먼트 단위로 어플리케이션 계층의 메세지들을 잘라서 전송계층의 헤더를 붙이고 네트워크 계층으로 보내고, receiv..
HTTPHTTP(HyperText Transfer Protocol)은 텍스트 기반의 통신 규약으로, 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. HTTP는 클라이언트-서버 구조로 이루어져 request-response의 과정을 통해서 동작한다.Clint : Server에 requestServer : Client에 response 데이터 통신에 TCP나 UDP와 같은 하위 프로토콜을 직접 사용하는 경우는 많지 않으며, 대부분 HTTP를 이용한다. HTTP는 TCP/IP를 이용하는 응용 프로토콜이며, 무상태(stateless), 비연결형(connectionless)이라는 특징을 가진다. - stateless하다는 것은 서버가 클라이언트의 이전 상태와 정보를 보존/저장하지 않는다는 의미이며(저장이 필요..
개요 HTTP 프로토콜은 stateless라는 특징을 갖는다. stateless(무상태)란 상태가 존재하지 않는다는 의미이다. stateless한 서버 입장에서는 동일한 클라이언트의 요청이라도 각 요청을 독립적으로 관리한다. 즉, 동일한 클라이언트가 다시 요청을 하더라도 서버는 이전의 요청을 기억하지 못하며, 이는 인증(Authentication)이 필요한 요청에 문제가 될 수 있다. 이러한 단점을 쿠키 없이 해결하기 위해서는 모든 요청에 사용자 정보를 포함하여 전송하면 된다. 하지만 모든 요청에 사용자 정보를 포함한다면 개발의 불편함과 보안상의 문제가 존재하기 때문에, 쿠키와 세션을 사용하여 이러한 문제를 해결한다. 쿠키 쿠키란 HTTP의 stateless라는 특징에서 벗어나 상태를 유지하기 위한..
Application LayerTCP/IP 네트워크 프로토콜 스택에서 가장 상위 레이어를 담당하고 있는 부분이 Application Layer이다. 이 계층에서는 이름에서 알 수 있듯이 host(=end system)들에게 직접적으로 여러가지 서비스를 제공하거나 받는 역할을 한다.우리가 사용하는 수많은 네트워크 어플리케이션들(이메일, 웹, 원격로그인, 디스코드....etc)에서 제공되는 기능들은 모두 가장 먼저 이 계층을 거친다. Application ArchitecturesㆍClient-Server클라이언트-서버 구조에서 서버는 host가 되어 항상 서버를 항상 제공해야 하고, 고정된 IP주소를 갖는다. 클라이언트는 필요할 떄 서버와 통신하여 필요한 정보를 주고받는다. 또한 클라이언트끼리 통신하는 것..
네트워크(Network) 컴퓨터와 같은 호스트(host) 간에 전송 매체들이 연결되어 데이터를 교환하는 시스템 자체를 이야기한다. 데이터의 교환 방식에는 다양한 방법들이 존재하는데, 시스템이 데이터를 교환할 때는 일련의 통신 규칙인 프로토콜(Protocol)에 의해 통신이 이루어진다.IP라는 프로토콜을 사용하는 네트워크인 인터넷이 대표적인 네트워크 통신망이다. 프로토콜(Protocol) 데이터 통신을 위해서 사용하는 통신 규약을 말한다. 대표적으로 인터넷에서 사용하는 프로토콜인 IP(Internet Protocol)이 있다. 인터넷을 사용할 때는 IP 패킷이라는 단위로 여러 정보들을 담아서 서버간 통신을 진행한다. 패킷(Packet)데이터 통신이 이루어질때 네트워크를 통해서 송수신되는 데이터 조각이..