목록Computer Science (26)
우보천리 개발

우리는 웹 브라우저에 특정 주소로 접속하기 위해서 호스트 이름으로 접속을 한다(www.naver.com 처럼) 하지만 호스트 이름으로는 해당 호스트의 위치를 알 수 없기 때문에 호스트 이름을 IP 주소로 변환해주는 절차가 필요하다. 그러한 임무를 수행하는 것이 바로 DNS(Domain Name Server)이다. DNS(Domain Name Server)란? 호스트 이름을 IP주소로 변환해준다 계층형으로 이루어져있고 UDP프로토콜을 사용한다 UDP 프로토콜을 사용하는 이유는 DNS에서 보내지는 데이터의 크기는 매우 작다(Name, IP Address). 그렇기 때문에 UDP 프로토콜을 사용해도 데이터가 유실 될 확률이 적을 뿐만 아니라 유실 되어도 빠르게 다시 요청할 수 있다. 또한 DNS는 준비동작이기..
HTTP는 Stateless이기 때문에 사용자의 정보를 저장하지 않는다 그럼 서버가 사용자를 확인해야할 경우(접속을 제한, 활동 추적, 장바구니, 로그인정보 저장 등) 어떻게 해야할까? 바로 쿠키를 사용하는 것이다. 그럼 사용자를 확인할 수 있게 해주는 쿠키와 세션의 특징과 차이를 알아본다 Cookie 쿠키는 사용자의 로컬에 저장되어있다 연결을 종료하여도 다음에 다시 연결할 때 HTTP Request 헤더에 자동으로 Cookie를 넣어서 요청한다 그렇기 때문에 서버는 사용자의 정보를 갖고있음 Session 쿠키는 로컬에 저장된다면 세션은 서버측에 저장이 된다 쿠키를 기반으로 동작한다 사용자가 Request를 보낼시 Session ID를 부과 사용자의 정보가 서버측에 저장되기 때문에 로컬에 저장되는 쿠키보..
HTTP Protocol은 HTTP Request와 HTTP Reponse 메시지를 주고 받는다. 이 두개의 메시지에는 어떤 내용이 포함되어있는지 알아보고자 한다 HTTP Get Message GET /blanks/index.html HTTP/1.1 Host: www.whatever.com Connection: close User-agent: Mozilla/5.0 Accept-language: kr Get Message의 첫줄은 요청라인(request line) 이라고 하고 3개의 필드로 나뉘어져있다 Method : GET,POST,DELETE,PUT 등. GET 방식은 객체를 요청할 때 사용 URL HTTP Version 첫번째 줄을 제외한 나머지 줄은 헤더라인(header line) 이라고 한다 Ho..

TCP 3-way Handshake TCP가 연결지향형인 이유는 데이터를 보내기 전, A와 B는 3-way handshake를 통해 연결을 확인하기 때문이다 연결이 수립된것을 확인하고 데이터를 받을 준비가 되었는지 확인 과정 SYN 비트를 1로 설정한 특별한 SYN 세그먼트와 최초의 임의의 순서번호(client_isn)를 선택하여 TCP 세그먼트에 넣어 연결을 요청 서버역시 SYN=1 비트와 client가 보낸 시퀀스번호(client_isn)에 +1 한 값을 ACK 해준다. 거기에 더해 서버의 시퀀스를 보낸다(server_isn) 클라이언트는 연결을 승인하며 SYN=0으로 보내고 server_isn + 1 값을 보내며 연결 승인을 확인. 이 단계에서는 세그먼트 내 데이터를 포함시킬 수 있다.
인터넷 애플리케이션에서 제공하는 두가지 프로토콜 UDP(User Datagram Protocol)과 TCP(Transmission Control Protocol)이 있다 애플리케이션 계층에서 내려온 데이터는 UDP 혹은 TCP 프로토콜의 헤더가 붙어 Segment로 만들어진다. 1. User Datagram Protocol 비신뢰적, 비연결형이다. 데이터 패킷을 전송할 때 연결설정하는 과정 없이 바로 전송(TCP와 다르게 핸드쉐이킹 과정 없음) - 비연결형 헤더에 최소한의 오류검출을 위한 체크섬필드가 존재. 그 이상 없음 - 비신뢰적 흐름제어, 혼잡제어 없음 메시지가 제대로 전달되었는지 확인 안함 헤더의 길이는 32비트(8바이트) / TCP는 20바이트인것을 생각하면 패킷 오버헤드가 낮음 오버헤드가 낮기..
Application Layer 네트워크 애플리케이션의 핵심 포인트는 end-device 사이에서 네트워크로 통신 실제로 통신하는 것은 프로세스(Process) Process는 Socket을 통해 네트워크로 메시지를 주고 받는다. 그래서 Socket은 App Layer과 Transport Layer 사이의 인터페이스 메시지를 교환하려면 어디로 보내야하는지 알아야한다 -> IP 메시지를 받은 호스트 내에서 어떤 프로세스가 수신해야하는지 알아야한다 -> Port Number (ex. Web server : 80) Client - Server 구조에서 Server는 고정IP 를 갖고 있는 항상 동작하고 있음 Client끼리는 통신하지 않음 두개의 프로세스에서 세션을 시작하기 위해서 접속을 기다리는 프로세스를 ..