본문 바로가기

컴퓨터공부/정보처리기사

[정보처리기사] OSI 참조 모델 , 프로토콜, 프로토콜의 기본 요소 , 가상회선 방식 , 데이터그램, TCP/IP

by Life & study 2023. 6. 23.
반응형

012345678910111213

[정보처리기사] OSI 참조 모델

[정보처리기사] OSI 참조 모델

 

OSI 참조 모델의 각 계층은 다음과 같습니다:

 

물리 계층

두 장치 간에 실제 접속과 절단, 
기계적, 전기적 , 기능적, 절차적 특성을 규칙을 정의함

물리적 전송 매체와 전송 신호 방식을 정의함

리피터, 허브



데이터 링크 계층

데이터 링크 계층은 두개의 인접한 개발 시스템들 간에 신회성 있고,
효율적인 정보 전송을 할수있도록
시스템 연결 설정 과 유지 및 종료 담당
흐름제어 기능
동기화 기능
오류 제어 기능
순서 제어 기능

랜카드, 브리지, 스위치

 




네트워크 계층

네트워크 연결을 관리하는 기능 과 데이터의 교환 및 중계기능을 함
네트워크 연결을 설정, 유지, 해제하는 기능을 함
경로설정, 데이터 교환 및 중계, 트래픽 제어, 패킷정보전송을 수행
X.25 IP 등의 표중이 있음

네트워크 액세스 계층
ETHERNET, IEEE 802, HDLC, X.25 , RS-232C, ARQ 등

라우터


전송계층

논리적 안정과 균일한 데이터 전송 서비스를 제공함
종단시스템간 투명한 데이터 전송을 가능하게 함
종단 시스템 전송 연결 설정, 데이터 전솔, 연결 해제 기능을 함
주소 설정, 다중화(분할 및 재조립) , 오류 제어, 흐름 제어를 수행함
TCP= 신뢰성 전송되는지 확인함
UDP= 비신뢰성 전송되든 확인안함 
등의 표준

 

전송계층
TCP, UDP, RTCP

게이트웨이


세션 계층

송 수신 측 간의 관련성을 유지하고 대화 제어를 담당함
대화(회화) 구성 및 동기 제어, 데이터 교환 관리 기능을 함
동기점은 오류가 있는 데이터
회복을 위해 사용하는 것,
종류에는 소동기점과 대동기점이 있음

인터넷 계층
IP, ICMP, IGMP, ARP, RARP



표현 계층


서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해
필요한 계층임
코드변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식(포맷) 변환,
문맥관리 기능을 함



응용 계층


응용 계층은 사용자(응용 프로그램) OSI 환경에 접근할 수 있도록 서비스를
제공함

응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의
서비스를 제공함
응용 계층 
TELNET , FTP, SMTP, SNMP, DNS,HTTP

 

하위 계층 물 - 데 - 네
상위 계층 전 - 세 - 표 - 응




 

물리 계층 (Physical Layer): 데이터를 전기 신호로 변환하여 전송하는 역할을 합니다. 주로 하드웨어적인 측면을 다룹니다.
데이터 링크 계층 (Data Link Layer): 물리 계층에서 전송된 데이터를 프레임으로 나누고, 오류 검출 및 수정을 수행합니다. 이 계층은 MAC(Media Access Control) 주소를 사용하여 네트워크 장치를 식별합니다.
네트워크 계층 (Network Layer): 데이터를 패킷으로 나누고, 경로 선택 및 라우팅을 수행합니다. 이 계층은 IP(Internet Protocol) 주소를 사용하여 호스트를 식별합니다.
전송 계층 (Transport Layer): 데이터의 신뢰성과 흐름 제어를 담당합니다. 이 계층은 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)를 사용하여 데이터를 전송합니다.
세션 계층 (Session Layer): 통신 세션을 설정, 유지, 종료하는 역할을 합니다. 이 계층은 동기화, 대화 제어 등을 수행합니다.
표현 계층 (Presentation Layer): 데이터의 형식 변환, 암호화, 압축 등을 수행합니다. 이 계층은 데이터를 응용 계층에서 사용할 수 있는 형태로 변환합니다.
응용 계층 (Application Layer): 사용자와 네트워크 간의 상호 작용을 담당합니다. 이 계층은 HTTP, FTP, SMTP 등의 프로토콜을 사용하여 서비스를 제공합니다.

 

[정보처리기사] 프로토콜

 

프로토콜은 컴퓨터나 네트워크 장치 사이에서 통신을 수행하기 위해 정의된 규칙과 규약의 집합입니다. 프로토콜은 데이터의 형식, 전송 방법, 오류 처리 등을 정의하여 통신의 원활한 진행을 보장합니다. 프로토콜은 네트워크 통신에서 중요한 역할을 수행하며, 다양한 프로토콜이 존재합니다.
프로토콜은 일반적으로 클라이언트와 서버 간의 상호 작용을 정의합니다. 클라이언트는 서버에 요청을 보내고, 서버는 요청에 대한 응답을 반환합니다. 이러한 요청과 응답은 프로토콜에 따라 정해진 형식과 규칙에 따라 이루어집니다.
프로토콜의 실행 순서는 프로토콜의 종류에 따라 다를 수 있습니다. 일반적으로 클라이언트는 서버에 연결을 요청하고, 서버는 연결을 수락합니다. 그 후, 클라이언트는 요청을 보내고, 서버는 요청을 처리하고 응답을 반환합니다. 클라이언트는 응답을 받고 연결을 종료합니다.
아래는 Python으로 작성된 예시 코드입니다. 이 코드는 간단한 클라이언트와 서버 간의 통신을 수행하는 예시입니다. 주석을 통해 각 부분의 역할과 데이터 흐름을 설명하였습니다.

 

# 클라이언트
import socket

# 서버의 IP 주소와 포트 번호
server_ip = "127.0.0.1"
server_port = 1234

# 서버에 연결
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((server_ip, server_port))

# 서버에 요청 보내기
request = "Hello, server!"
client_socket.send(request.encode())

# 서버로부터 응답 받기
response = client_socket.recv(1024).decode()
print("Server response:", response)

# 연결 종료
client_socket.close()

# 서버
import socket

# 클라이언트의 IP 주소와 포트 번호
client_ip = "127.0.0.1"
client_port = 1234

# 서버 소켓 생성
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((client_ip, client_port))
server_socket.listen(1)

# 클라이언트의 연결 수락
client_socket, client_address = server_socket.accept()

# 클라이언트로부터 요청 받기
request = client_socket.recv(1024).decode()
print("Client request:", request)

# 응답 보내기
response = "Hello, client!"
client_socket.send(response.encode())

# 연결 종료
client_socket.close()
server_socket.close()

 

 

 

[정보처리기사] 프로토콜의 기본 요소

 

프로토콜은 통신을 위한 규칙과 규약을 정의하는 것입니다. 프로토콜의 기본 요소에는 구문, 의미, 시간에 대한 상세한 설명이 포함됩니다. 이러한 요소들은 프로토콜을 이해하고 구현하는 데 도움이 됩니다. 또한, 코드 실행 순서와 모든 코드에는 주석으로 설명을 추가하는 것이 좋습니다. 이해할 수 있는 예시 코드를 보여드리겠습니다.

구문
의미
시간

# 예시 프로토콜 코드
def protocol_function(data):
    """
    이 함수는 프로토콜을 실행하는 예시입니다.
    :param data: 프로토콜에 필요한 데이터
    :return: 프로토콜 실행 결과
    """
    # 프로토콜의 구문을 실행하는 코드
    result = execute_syntax(data)

    # 프로토콜의 의미를 해석하는 코드
    result = interpret_meaning(result)

    # 프로토콜의 시간을 처리하는 코드
    result = process_time(result)

    return result

[정보처리기사] 가상회선 방식 , 데이터그램

패킷 교환 방식

가상 회선 방식
가는길을 정해서 가는 방식 = 제어패킷 = 패킷의 송수신 순서가 같음

데이터그램 방식
경로를 설정하지않고 독립적으로 운반하는 방식

 

 

가상 회선 방식은 통신 경로를 미리 설정하고 데이터를 전송하는 방식입니다. 이 방식에서는 제어 패킷을 사용하여 송수신 순서를 유지합니다. 데이터는 가상 회선을 따라 전송되며, 경로가 설정되어 있기 때문에 패킷이 도착하는 순서대로 전달됩니다.

데이터그램 방식은 경로를 설정하지 않고 독립적으로 데이터를 운반하는 방식입니다. 이 방식에서는 각각의 패킷이 독립적으로 처리되며, 경로 설정이 필요하지 않습니다. 각 패킷은 목적지로 독립적으로 전송되며, 도착하는 순서와 상관없이 처리됩니다.

 

# 예시 가상 회선 방식 코드
def virtual_circuit(data):
    """
    가상 회선 방식으로 데이터를 전송하는 예시입니다.
    :param data: 전송할 데이터
    :return: 전송 결과
    """
    # 경로 설정
    path = set_path()

    # 제어 패킷 전송
    send_control_packet(path)

    # 데이터 패킷 전송
    send_data_packets(data)

    # 패킷 수신 확인
    receive_acknowledgement()

    return "전송 완료"


# 예시 데이터그램 방식 코드
def datagram(data):
    """
    데이터그램 방식으로 데이터를 전송하는 예시입니다.
    :param data: 전송할 데이터
    :return: 전송 결과
    """
    # 패킷 분할
    packets = split_data_into_packets(data)

    # 각 패킷 독립적으로 전송
    for packet in packets:
        send_packet(packet)

    # 패킷 수신 확인
    receive_acknowledgement()

    return "전송 완료"

 

# 예시 가상 회선 방식 코드
def virtual_circuit(data):
    """
    가상 회선 방식으로 데이터를 전송하는 예시입니다.
    :param data: 전송할 데이터
    :return: 전송 결과
    """
    # 경로 설정
    path = set_path()

    # 제어 패킷 전송
    send_control_packet(path)

    # 데이터 패킷 전송
    send_data_packets(data)

    # 패킷 수신 확인
    receive_acknowledgement()

    return "전송 완료"


# 예시 데이터그램 방식 코드
def datagram(data):
    """
    데이터그램 방식으로 데이터를 전송하는 예시입니다.
    :param data: 전송할 데이터
    :return: 전송 결과
    """
    # 패킷 분할
    packets = split_data_into_packets(data)

    # 각 패킷 독립적으로 전송
    for packet in packets:
        send_packet(packet)

    # 패킷 수신 확인
    receive_acknowledgement()

    return "전송 완료"

 

예시 코드는 가상 회선 방식과 데이터그램 방식으로 데이터를 전송하는 함수를 보여줍니다. 각 함수는 주석을 통해 각 단계의 설명을 제공하고 있습니다. 가상 회선 방식에서는 경로 설정과 제어 패킷 전송, 데이터 패킷 전송 등의 단계를 거치며, 데이터그램 방식에서는 패킷 분할과 각 패킷의 독립적인 전송 등의 단계를 거칩니다. 이러한 주석과 예시 코드를 통해 각 방식의 동작을 이해하고 구현하는 데 도움이 될 것입니다.

 

[정보처리기사] TCP/IP , 

 

TCP/IP

인터넷에 연결된  서로 다른 기종의 컴퓨터들이 데이터를 주고받을수
있도록 하는 
표준 프로토콜이다.

TCP는 연결형 서비스
전송계층
연결형 서비스
패킷의 다중화, 순서제어, 오류제어, 흐름제어
전이중 방식의 양방향 가상회선을 제공
전송 데이터와 응답 데이터를 함께 전송한다.
신뢰성이 있는 연결 지향형 전달 서비스이다.



IP는 비연결형 서비스
네트워크계층
비연결형 서비스
패킷의 분해/조립
주소 지정
경로 선택 기능



TCP/IP는 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜입니다. TCP는 연결형 서비스를 제공하는 전송 계층 프로토콜이며, IP는 비연결형 서비스를 제공하는 네트워크 계층 프로토콜입니다.
TCP는 연결형 서비스로, 데이터의 전송을 위해 패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 등의 기능을 제공합니다. 이를 통해 안정적이고 신뢰성 있는 데이터 전송을 보장합니다.
IP는 비연결형 서비스로, 데이터의 전송을 위해 패킷의 분해와 조립, 주소 지정, 경로 선택 기능을 제공합니다. IP는 패킷을 독립적으로 전송하며, 각 패킷은 목적지 주소를 가지고 있어 독립적으로 전달됩니다.

 

# 예시 TCP/IP 코드
def tcp_ip_communication(data):
    """
    TCP/IP 프로토콜을 사용하여 데이터를 주고받는 예시입니다.
    :param data: 전송할 데이터
    :return: 수신한 데이터
    """
    # TCP 연결 설정
    tcp_connection = establish_tcp_connection()

    # 데이터 전송
    send_data(tcp_connection, data)

    # 데이터 수신
    received_data = receive_data(tcp_connection)

    # TCP 연결 종료
    close_tcp_connection(tcp_connection)

    return received_data

 

 

 

# 예시 TCP/IP 코드
def tcp_ip_communication(data):
    """
    TCP/IP 프로토콜을 사용하여 데이터를 주고받는 예시입니다.
    :param data: 전송할 데이터
    :return: 수신한 데이터
    """
    # TCP 연결 설정
    tcp_connection = establish_tcp_connection()

    # 데이터 전송
    send_data(tcp_connection, data)

    # 데이터 수신
    received_data = receive_data(tcp_connection)

    # TCP 연결 종료
    close_tcp_connection(tcp_connection)

    return received_data

위의 예시 코드는 TCP/IP 프로토콜을 사용하여 데이터를 주고받는 함수를 보여줍니다. 주석을 통해 각 단계의 설명을 제공하고 있습니다. TCP 연결 설정, 데이터 전송, 데이터 수신, TCP 연결 종료 등의 단계를 거치며 데이터를 주고받습니다. 이러한 주석과 예시 코드를 통해 TCP/IP 프로토콜을 이해하고 구현하는 데 도움이 될 것입니다.

[정보처리기사] TCP/IP , 

TCP/IP

응용 계층 
TELNET , FTP, SMTP, SNMP, DNS,HTTP

전송계층
TCP, UDP, RTCP

인터넷 계층
IP, ICMP, IGMP, ARP, RARP

네트워크 액세스 계층
ETHERNET, IEEE 802, HDLC, X.25 , RS-232C, ARQ 등




 

 

 

 

 

 

 

 


 

반응형

댓글