해당 자료는 따라하면서 배우는 IT/네트워크 기초 강의를 보고 정리한 것입니다.
3계층에서 멀리 있는 컴퓨터의 네트워크 대역을 찾아가고, 2계층에서 그 네트워크의 특정 컴퓨터를 찾아갔었다.
송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스 제공
연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 다중화와 같은 편리한 서비스 제공
잘 알려진 것은 연결 지향 전송 방식을 사용하는 전송 제어 프로토콜 (TCP)이다.
보다 단순한 전송에 사용되는 사용자 데이터그램 프로토콜 (UDP)도 있다.
연결이 된 이후에 전송함
비 연결 지향형 프로토콜
4계층에서 사용하는 주소
특정 프로세스와 특정 프로세스가 통신을 하기 위해 사용.
네트워크 상에서 통신을 할 때 IP 주소를 바탕으로 해당 서버가 있는 컴퓨터에 접근하게 된다.
하나의 IP에서 여러 애플리케이션을 실행할 경우, 컴퓨터에는 여러 개의 서버가 실행하게 된다.
이때 포트번호를 통해 대상 IP 기기의 특정 애플리케이션의 서버에 접속할 수 있도록 도와줘야 함

하나의 포트는 하나의 프로세스만 사용 가능!
반대로 하나의 프로세스가 여러 개의 포트를 사용하는 것은 가능함.
무조건 지켜야하는 것은 아님. 예를 들어 일반적으로 웹 서비스는 80번 포트를 사용하지만 웹 서비스가 항상 80번 포트를 사용해야만 하는 것은 아님
Dynamic 포트 (49152 ~ 65535)
일반 사용자들이 사용
사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)는 유니버셜 데이터그램 프로토콜이라고도 함
전송방식이 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 통보없이 누락시키기도 함
→ 오류의 검사나 수정이 필요없는 프로그램에서 수행하는 것으로 가정

DNS 서버
TCP/IP 네트워크 상에서 사람이 기억하기 쉽게 문자로 만들어진 도메인을 숫자로 된 IP 주소로 바꾸는 서버

tftp 서버
파일을 공유
RIP 프로토콜
라우팅 정보 공유
실시간 스트리밍 서비스에서 사용
전송 제어 프로토콜(Transmission Control Protocol, TCP)는 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다.
TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 비접속형 사용자 데이터그램 프로토콜(User Datagram Protocol)을 사용
TCP는 UDP보다 안전하지만 느림 (요즘은 빠름… 우리가 느낄 정도는 아니다…)

어떤 플래그를 세팅해서 보내느냐에 따라 연결을 할려고 물어보는건지, 대답하려는건지, 연결을 끝내는건지,,, 등등 TCP의 주된 기능이 플래그로 나뉘어짐
TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정
이 과정을 3 Way Handshake라고 부름

ACK번호는 받는쪽에서 답장 줄 때 받은 시퀀스 번호 + 1
처음 보내는 것이 아닌 답장의 시퀀스 번호는 받은 ack 번호
처음 보낼 때는 랜덤한 값
TCP를 이용한 데이터 통신을 할 때 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로들르 포함한 패킷을 주고 받을 때의 일정한 규칙


실선은 클라이언트의 상태 변화
점선은 서버의 상태 변화

Network Address Translation
IP 패킷의 TCP / UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술
패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 함
NAT를 이용하는 이유는 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함
but, 꼭 사설 IP를 공인 IP로 변환하는 데에만 사용하는 기술은 아님
패킷이 라우터나 방화벽과 같은 네트워크 장비를 가로지르는 동안 특정 IP 주소와 포트 번호의 통신 요청을 특정 다른 IP와 포트 번호를 넘겨주는 네트워크 주소 변환(NAT)의 응용
이 기법은 게이트웨이(외부망)의 반대쪽에 위치한 사설 네트워크에 상주하는 호스트에 대한 서비스를 생성하기 위해 흔히 사용됨
직접 컴퓨터의 IP로 보내는 것이 아니라 공인 IP로 보내고, 그 공인 IP에 포트포워딩이 설정되어 있어야 한다.