기술 면접 정리/네트워크 31

소켓 프로그래밍이란

사전적으로 '구멍', '연결', '콘센트' 등의 의미 이와 마찬가지로 네트워크 프로그래밍 관전에서도 소켓의 의미는 프로그램이 네트워크에서 데이터를 송수신할 수 있도록 "네트워크 환경에 연결할 수 있게 만들어진 연결부"가 바로 네트워크 소켓이다. TCP/IP 소켓 통신이란 보통 OSI 7 Layer(Open System Interconnection 7 Layer)의 네 번째 계층인 TCP(Transport Control Protocol) 상에서 동작하는 소켓을 주로 사용하는데, 이를 "TCP 소켓" 또는 "TCP/IP 소켓"이라고 부릅니다. (UDP에서 동작하는 소켓은 "UDP 소켓"이라고 합니다.) 클라이언트 소켓(Client Socket)과 서버 소켓(Server Socket) 두 개의 시스템(또는 프..

TCP 혼잡제어

네트워크 내에서 전송을 하면서 항상 잔잔한 상태는 아닙니다. 어떤 때에는 데이터의 수가 과도하게 증가하기도 하고 데이터가 유실되기도 합니다. 이러한 상황을 혼잡상황이라고 합니다. 그리고 TCP는 이 혼잡 상황을 방지하거나 해결하는 혼잡제어 기능을 제공합니다. TCP는 혼잡이 발생하기 전과 혼잡이 발생한 후의 제어방식이 각기 다른데 혼잡이 발생하기 전에는 slow Start와 Additive Increase방식을 사용하면서 혼잡을 회피합니다. 그리고 혼잡이 발생한 후에는 Multiplicative Decrease 방식으로 혼잡 상황을 해결합니다. TCP가 혼잡 상황을 인식하는 경우 데이터를 송신하고 타임아웃되어 재전송해야 할 경우 혹은 3개 이상의 중복된 ack를 수신했을 경우입니다. 이러한 상황을 인식하..

TCP 에러제어

TCP는 전송된 세그먼트가 손실되거나 순서가 어긋났을 때 혹은 중복되었을 경우 이에 대한 제어나 처리를 하는 기능이 있습니다. 그 중 하나의 방법이 TCP에러제어 입니다. TCP에러제어는 먼저 에러를 검출하는 과정을 거치며 그 방법으로 CRC와 체크섬을 사용합니다. TCP헤더에는 체크섬이라는 필드가 있는데 이곳에서 헤더와 데이터에 대한 에러를 검사하는 기능을 통해 세그먼트가 전송되는 도중 에러가 발생했는지 확인합니다. 에러를 검출한 후 에러를 정정하는 과정을 거치는데 에러 정정에는 ARC(Automatic Repeat Request)방식을 사용합니다. 재전송방식에는 Stop-and-wait ARQ, Go-Back-N ARQ, Selective Repeat ARQ등의 방식이 있습니다. Stop-and-wa..

TCP 흐름제어

tcp 통신 도중 송수신지의 처리 능력이 다르기 때문에 데이터가 중간에 유실될 수 도 있습니다. 이를 방지하기 위해서 흐름 제어 기법이 TCP에서 사용됩니다. 대표적인 흐름제어 기법으로 Stop-and-wait기법과 Sliding Window기법이 있는데 Stop-and-wait기법은 비효율적이라는 단점이 있습니다. 반면 슬라이딩 윈도우 기법은 계속해서 자신의 윈도우 크기를 상대에게 알려주는 '윈도우 광고 기법'을 사용합니다. Stop-and-wait Stop-and-wait방식은 모든 패킷에 대하여 응답을 받아야만 다음 패킷을 전송하는 방식입니다. Sliding Window 수신 측에서 설정한 윈도우 크기만큼 송신 측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 ..

무선 LAN

지금까지는 케이블을 통해 기기장치들을 연결하는 유선 이더넷에 학습했습니다.( 케이블을 통해 스위치와 노트북을 연결한 형태도 이더넷의 한 예시입니다. ) 이와 달리 무선 LAN은 유선 케이블을 이용하지 않으면서도 LAN을 구축할 수 있는 기술입니다. 케이블없이 간편하게 네트워크를 만들기 위해서 무선 LAN이 개발되었습니다. 무선 방식은 LAN 케이블이 꼬일 일이 없다는 장점이 있지만 유선보다 속도가 불안정하며 전파의 영향을 많이 받고 보안산의 위험도 높습니다. 무선 LAN 네트워크는 무선 LAN 액세스 포인트와 무선 LAN 클라이언트로 구성 되어 있습니다. 무선 LAN 액세스 포인트 Wireless Access Point의 약자로, WAP라고 부릅니다. 액세스 포인트를 유선 이더넷에 연결함으로써 무선 클라..

프록시 서버

웹 서버 접속을 대신해주는 서버입니다. proxy는 영어로 대리라는 뜻인데요. 즉 영어 단어 그대로 '대리 서버'라고 이해하시면 좋을 것 같습니다. 웹 페이지를 보고 싶다고 가정해 봅시다. 웹 페이지를 접속하기 위해서는 웹브라우저와 웹 서버간의 통신이 필요합니다. 이 사이에 웹 사이트 접속을 대행하는 프록시 서버를 거칠 수 있습니다. 웹 브라우저와 웹 서버 사이에 프록시 서버를 끼워 설정함으로써 웹 브라우저가 프록시 서버를 통해서 웹 서버에 접속하게끔 합니다. 웹 브라우저는 프록시 서버로 HTTP 요청을 보냅니다. 이때 프록시 서버에 접촉할 때 TCP포트는 주로 8080을 사용합니다. HTTP 요청을 받은 프록시 서버는 접속할 웹서버로 HTTP요청을 보냅니다. 이때 TCP포트는 주로 80을 사용합니다. ..

쿠키

웹서버 애플리케이션에서 웹 브라우저에 특정 정보를 저장해두는 기술 HTTP쿠키를 이용함으로써 특정 사이트에 접속할 때, 로그인 정보, 웹페이지 열람 이력, 쇼핑몰 상품 열람 기록 쿠키의 동작 과정 웹 서버에서 웹 브라우저의 요청에 대하여 HTTP 응답에 쿠키를 포함하여 보냅니다. 이때 쿠키 정보는 HTTP Set-Cookie헤더에 포함됩니다. 웹 브라우저에서 쿠키를 받을 수 있도록 허용한 상태라면 쿠키를 저장합니다. 그 뒤로 같은 웹사이트에 접속할 때 웹 서버에서 HTTP 요청을 보낼 때 저장된 쿠키도 같이 전송됩니다. 만약 서버에서 쿠키에 업데이트된 내용이 있다면 응답할 때 다시 업데이트된 쿠키를 보내줍니다.

HTTP

응용 계층에는 웹 페이지에 접속하기 위한 프로토콜이 있습니다. 바로 HTTP입니다. 웹 페이지를 접속하는 구조와 과정을 먼저 설명 드리겠습니다. 웹브라우저를 통해 사용자가 보고 싶은 특정 URL을 요청하면 웹 서버에서 그에 상응하는 HTML문서를 응답합니다. HTTP를 통해 웹 사이트를 구성하는 HTML파일을 전송하며 HTTP파일 전송은 HTTP요청과 응답을 주고 받으며 이루어집니다. 기본적으로 HTTP는 TCP 80번 포트를 이용하여 요청과 응답메시지를 교환합니다. 잠시 데이터 전송 간에 필요한 URL에 대해서 살펴보겠습니다. https://www.inflearn.com/roadmaps https는 보안 프로토콜로 해당 파트는 브라우저가 어떤 프로토콜을 사용하는지 나타내는 부분입니다. www.infle..

DNS

IP주소 대신 특정 호스트를 지칭하는 이름을 사용하여 쉽게 목적지 주소를 기억하는 방식이 있습니다. DNS: 이름 해석: 도메인 이름을 기반으로 IP주소를 알아내는 것 이와 같이 네트워크에서 도메인 이름을 기반으로 IP주소를 알아내는 거슬 이름 해석(name resolution)이라고 합니다. 예를 들어 www.naver.com으로 URL을 입력하면서 네이버의 IP주소를 물어봅니다. 그럼 DNS서버에서 네이버의 IP주소를 알려주며 해당 IP주소로 웹 서버에 요청하여 접속하는 과정을 거칩니다. 이러한 과정이 도메인 이름을 기반으로 IP주소를 알아내는 이름 해석 과정입니다. 이렇게 도메인 이름으로 호스트 IP주소를 얻는 조회 방법을 정방향 조회(Forward Query)라고 합니다. 반대로 호스트 IP주소로..

DHCP(Dynamic Host Configuration Protocol)

OTCP/IP설정을 수동으로 설정할 때의 항목입니다. TCP/IP 설정항목 IP주소 서브넷 마스크 기본 게이트웨이 DNS 서버 IP 주소 컴퓨터에 IP주소를 할당한다고 가정하자 수동으로 주소를 할당해주는 방법이 있고 자동으로 할당해주는 방법이 있습니다. IP주소 할당 방법 정정 할당 동적 할당 수동 설정 자동 주소 설정 DHCP(Dynamic Host Configuration Protocol) DHCP 먼저 DHCP 클라이언트는 DHCP서버가 있는지 물어봅니다.(DISCOVER 임대 요청) 있다면 사용할 수 있는 TCP/IP설정을 묻습니다. 디스커버리 단계에서 클라이언트는 주소를 할당 받기 전이기 때문에 IP주소는 0.0.0.0입니다. 또한 DHCP통신은 브로드캐스트를 이용하기에 목적지 주소는 255.2..