1.두 대의 컴퓨터가 통신하려면 0과 1만 주고받을 수 있으면 된다.
일정한 파장함수일 때는 가능하다. ex)sin그래프, 주파수: 1초당 진동한 진동 횟수
2.불규칙적인 함수일 때는 주파수 값이 하나로 고정되지 않는다.
그럼 아날로그 신호로 보내야 한다. 하드웨어적으로 구현됨
encoding : 0과 1의 나열을 아날로그 신호로 바꿔서 전선으로 흘림
decoding : 아날로그 신호가 들어오면 0과 1의 나열을 해석
module : 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 모듈
1.더 많은 컴퓨터들 사이의 통신: A 컴퓨터에서 B 컴퓨터로 데이터를 전송하고 싶은 경우,
A 컴퓨터에 B의 주소를 담아서 데이터를 전송.이 때 입력하는 주소는 각 컴퓨터들의 고유한 주소를 가지게 되는데 이를 IP라함.
2. A는 B의 주소를 어떻게 알았을까: 우리가 주소창에 www.naver.com을 입력하면, 이 영어는 IP주소로 변환되어 사용. 이를 DNS(Domain name system)라고 한다. naver.com의 IP주소를 알고있는 것과 다름 없다.
DNS흐름
3.패킷(packet)의 이동 방향: 패킷을 받은 라우터 '가'는 패킷을 열어서 목적이 IP주소를 확인.
라우터 '가'에 없다는 것을 알게 되고 라우터 '마'로 패킷을 전송. B의 주소를 알고있는 라우터 '마'는 패킷이 B에 도착하기 위해서는 어느 전선으로 패킷을 내보내야 하는지 알아야 한다.
4. 라우터 '마'의 입장
라우터 '마' 는 고민을 해야한다. '가'에게 줘야할 지, '나'에게 줘야할 지, '바'에게 줘야할 지 모르기 때문이다. 라우터 '마'는 데이터를 다시 패킷에 포장하고 라우터 '바'로 전달한다.
라우터 '바'는 똑같은 방법으로 라우터 '라'에게 패킷을 전송한다. 라우터'라'는 자신과 연결된 컴퓨터들 중에 IP주소가 55.10.54.75인 컴퓨터가 있다는 것을 알고 있음. 패킷을 B에 전달해준다.
구현 위치
운영체제 커널에 소프트웨어적으로 구현되어 있다.
3계층. Network Layer 정리
프로세스에게 번호 붙이기: 먼저, 데이터를 받고자 하는 프로세스들은 포트 번호(Port Number)라는 것을 가져야 한다.
포트번호(port number) : 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들의 서로 겹치지 않게 가져야 하는 정수 값.
송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다. 데이터가 들어온 컴퓨터는 해당 포트번호의 프로세스에게 전달한다.
Transport Layer 구현 위치
운영체제(OS)의 커널에 소프트웨어적으로 구현되어 있다.
현대 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있다.
TCP/IP 소켓 프로그래밍: 운영체제의 Transport lyaer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것을 TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍이라고 한다.
소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작 시킬 수 있다.
뿐만 아니라, TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있다.
누구든 자신만의 Application Layer 프로토콜을 만들어서 사용할 수 있다.
HTTP Encoder를 통해 Status code + 데이터 형태 로 반환
4계층 Encoder를 통해서 Port + Status code + 데이터 형태로 반환
1-3 계층을 통해서 나온 아날로그 신호가 다시 클라이언트 컴퓨터로 전달되서 Reponse.
동영상과 여러 블로그들의 글을 참고해 작성하였습니다.